当前位置: 首页 > 知识库问答 >
问题:

如何在Selenium WebDriver(Python)中找到包含特定文本的元素?

白祺然
2023-03-14

我试图用Selenium测试一个复杂的JavaScript接口(使用Python接口,跨多个浏览器)。我有多个表单按钮:

<div>My Button</div>

我希望能够搜索基于“我的按钮”(或不区分大小写,部分匹配,如“我的按钮”或“按钮”)的按钮。

我发现这是非常困难的,以至于我觉得我错过了一些明显的东西。到目前为止我所拥有的最好的东西是:

driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')

但是,这是区分大小写的。我尝试的另一件事是遍历页面上的所有div,并检查Element.Text属性。但是,每次您得到一个形式为:

<div class="outer"><div class="inner">My Button</div></div>

div.outer也有“我的按钮”作为文本。为了解决这个问题,我尝试查看div.outer是否是div.inner的父级,但我不知道如何做到这一点(element.get_element_by_xpath('..')返回元素的父级,但它测试的不等于div.outer)。

此外,迭代页面上的所有元素似乎真的很慢,至少使用Chrome WebDriver是这样。

想法?

我在这里询问(并回答)了一个更具体的版本:如何在Selenium WebDriver中获取元素的文本,而不包括子元素文本?

共有2个答案

杜翰林
2023-03-14

您可以尝试以下XPath表达式:

'//div[contains(text(), "{0}") and @class="inner"]'.format(text)
洪河
2023-03-14

请尝试以下操作:

driver.find_elements_by_xpath("//*[contains(text(), 'My Button')]")
 类似资料:
  • 问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我试图找到一种方法来扫描我的整个Linux系统,以查找包含特定文本字符串的所有文件。只是为了澄清,我正在文件中寻找文本,而不是在文件名中寻找文本。 当我查找如何执行此操作时,我两次遇到此解决方案: 但是,它不起作用。似乎显示了系统中的每个文件。 这接近正确的方法吗?如果没

  • 如何查找在其文件内容中包含特定文本字符串的所有文件? 下面不行。它似乎显示了系统中的每一个文件。

  • 问题内容: By Company   我需要捕获上述元素的xpath。我尝试了以下替代方法,但在Chrome中似乎没有任何效果。您能否建议其他选择。 问题答案: 要查找元素: 您可以使用以下xpath之一: 使用: 使用: 但是,理想情况下,您可能希望避免使用 NO-BREAK SPACE 字符,并使用以下任一解决方案: 使用: 使用: 参考 您可以在以下位置找到相关的详细讨论: 使用XPATH搜

  • 当按下按钮时,我想遍历工作表中的所有单元格,找到包含。doc或。xls或。pdf的单元格,并隐藏整行。我知道我不能使用,但肯定有类似的内容。 单元格示例 这是我现在所拥有的,我可以用什么来替换包含?

  • 本文向大家介绍从Python中的元组列表中找到包含给定元素的元组,包括了从Python中的元组列表中找到包含给定元素的元组的使用技巧和注意事项,需要的朋友参考一下 列表可以将元组作为其元素。在本文中,我们将学习如何识别包含特定搜索元素(字符串)的元组。 有条件 我们可以根据情况设计跟踪。之后,我们可以提及条件或条件组合。 示例 输出结果 运行上面的代码给我们以下结果- 带过滤器 我们将过滤器功能与

  • 我需要清理一个包含列表的网站。单击任何列表元素都会显示一个模式对话框,其中包含一些我想要删除的文本。在循环中这样做会导致过时的元素异常,所以这就是我最初做的 点击这个锚定标签元素会显示模态对话框,所以我将所有这些元素的文本存储在一个列表中,最后我做到了: 现在我得到没有元素异常错误,即使temp_name打印正确的文本。网页结构如下: 锚标签中的文本是我正在寻找的。我计划通过文本找到元素,然后单击