为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

我正在尝试使用Selenium(使用Python接口并在多个浏览器上)测试复杂的javascript接口。我有许多形式的按钮:<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网络驱动程序,迭代页面上的所有元素似乎真的很慢。有想法吗?
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

请尝试以下操作:


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


查看完整回答
反对 回复 2019-10-15
?
森林海

TA贡献2011条经验 获得超2个赞

您可以尝试使用xpath:


'//div[contains(text(), "{0}") and @class="inner"]'.format(text)


查看完整回答
反对 回复 2019-10-15
?
Qyouu

TA贡献1786条经验 获得超11个赞

您还可以将其与“页面对象模式”一起使用,例如:


试试这个代码:


@FindBy(xpath = "//*[contains(text(), 'Best Choice')]")

WebElement buttonBestChoice;


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 5506 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信