我正在使用Selenium的Firefox网络驱动程序来刮取一个看起来要在客户端使用React渲染的网页。呈现的DOM中的类看起来是动态生成的,并且似乎随着每个新请求而改变。页面上还有许多按钮元素,其中一些不在视口中。因此,我的策略是寻找一种单击包含我使用硒输入的文本的按钮的方式。几个按钮将包含文本,我只想找到第一个这样的按钮。
使用selenium / xpath,我如何选择包含文本E9 1QJ的第一个按钮?
<button>
<div><svg ...> </div>
<div>
<div>London</div>
<div>E9 1QJ</div>
</div>
</button>
<button>
<div><svg ...> </div>
<div>
<div>London Foo Bar</div>
<div>E9 1QJ</div>
</div>
</button>
谢谢
答案 0 :(得分:1)
这应该有效:
{driver}.find_element_by_xpath("//button[div/div[text()='E9 1QJ']][1]")
但是请记住,像这样的解决方案不是很灵活,并且可能会在html结构发生最小变化的情况下中断。