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

标签 python selenium selenium-webdriver

我正在尝试使用 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 网络驱动程序。

想法?


我在这里询问(并回答)了一个更具体的版本: How to get text of an element in Selenium WebDriver, without including child element text?

最佳答案

尝试以下方法:

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

关于python - 如何在 Selenium WebDriver (Python) 中找到包含特定文本的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323403/

相关文章:

python - 我如何在 Yocto/Bitbake 的另一个食谱中引用/找到一个食谱的 ${PV}?

Python:无法连接到 Postgresql 数据库

Python Selenium 如何从跨度后的 div 中获取文本

selenium - 如何在 Selenium IDE 中组织 "IF ELSE"

c# - 驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Selenium 错误

selenium - 如何关闭 Selenium 中的日志记录?

python - 矢量化迭代Python循环: c[i] = a[i] + b[i] * c[i-1]

python - Tkinter:调用多线程实例

python - 获取内部 HTML - Selenium、BeautifulSoup、Python

c# - 当 driver.Navigate().GoToUrl ("http://www.example.com/"时 chromedriver.exe 已停止工作)