小编典典

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

python

我正在尝试使用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网络驱动程序迭代页面上的所有元素似乎真的很慢。

有想法吗?


阅读 261

收藏
2021-01-20

共1个答案

小编典典

请尝试以下操作:

driver.find_elements_by_xpath("//*[contains(text(), 'My Button')]")
2021-01-20