当前位置: 首页 > 面试题库 >

我可以在python和Selenium中使用正则表达式找到元素吗?

夏侯枫
2023-03-14
问题内容

我需要单击一个下拉列表,然后单击其中的隐藏元素。html将由javascript生成,但我不知道ID或类名,但我会知道其中会有一个短语。我可以通过正则表达式查找和元素,然后用硒单击它吗?


问题答案:

您不能简单地使用内置的硒webdriver定位器进行基于正则表达式的搜索,但是您可以通过多种操作来帮助您:

  • contains()starts-with()XPath函数:

    //div[contains(., "Desired text")]
    

    //div[starts-with(., “Desired text”)]

  • precedingpreceding-siblingfollowingfollowing-sibling轴线,可以帮助你,如果你知道元素的新生成块的相对位置,你需要找到

还有 CSS选择器, 用于元素属性的部分匹配:

a[href*=desiredSubstring]  # contains
a[href^=desiredSubstring]  # starts-with
a[href$=desiredSubstring]  # ends-with

而且,您总是可以找到比所需更多的元素,并稍后在Python中将其过滤掉,例如:

import re

pattern = re.compile(r"^Some \w+ text.$")

elements = driver.find_elements_by_css_selector("div.some_class")
for element in elements:
    match = pattern.match(element.text)
    if match:
        print(element.text)


 类似资料:
  • 问题内容: 我想获取所有具有与某些正则表达式匹配的文本的div / links / ..的xpath计数。例如: 我希望能够致电: 并使其返回2。(当然,这是一个简单的示例,我想使用各种正则表达式) 这可能吗,怎么办? 问题答案: 使用允许您使用javascript 的协议。而javascript具有regexp:

  • 1. 正则表达式 1.1 简介 正则表达式 (regular expression) 描述了一种字符串匹配的模式 (pattern),例如: 模式 ab+c 可以匹配 abc、abbc、abbbc 代表前面的字符出现 1 次或者多次 模式 ab*c 可以匹配 ac、abc、abbc ? 代表前面的字符出现 0 次或者多次 模式 ab?c 可以匹配 ac、abc ? 代表前面的字符出现 0 次或者

  • 我在Java的一次采访中被问到这个问题。我不能解决它,但我猜它可以解决使用正则表达式。不确定是否有一种不使用正则表达式的替代方法。有人能帮我用正则表达式吗?或者,如果不使用正则表达式就能解决这个问题。 给定一个平衡括号字符串(它只包含或,并且它已经平衡),我需要查找它内部是否包含模式(表示一个或多个平衡括号表达式)。也就是说,检查它是否在任何中包含3个或更多的。 示例: 对于,预期答案为true,

  • 问题内容: 我想使用正则表达式检查2种模式。 我可以同时检查这两种模式吗(例如if(condition1 | condition2)条件)。 任何想法? 问题答案: 您可以使用管道将两个+表达式分开,从而完全按照自己的方式进行操作 例如:常规表达式将匹配OR

  • 我面临的错误截图 上面的一行显示了错误,它表示。我在堆栈溢出上看到过这种问题,但解决方案对我没有帮助

  • 问题内容: 我有这段代码,我想知道,是否可以替换Java正则表达式中的仅组(不是所有模式)。码: 问题答案: 使用(其中n是数字)来引用中捕获的子序列。我假设您想用文字字符串 “ number” 替换第一组,并用第一组的值替换第二组。 考虑第二组而不是。 是一个贪婪的匹配器,首先会消耗最后一位。当匹配器意识到最终的匹配项时,匹配器将不得不回溯,然后才可以匹配最终的数字。