硒选择包含文本匹配的第一个按钮

时间:2019-05-28 16:35:05

标签: python-3.x selenium selenium-webdriver

我正在使用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>

谢谢

1 个答案:

答案 0 :(得分:1)

这应该有效:

{driver}.find_element_by_xpath("//button[div/div[text()='E9 1QJ']][1]") 

但是请记住,像这样的解决方案不是很灵活,并且可能会在html结构发生最小变化的情况下中断。