我正在尝试使用 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 include child element text?