<div id="tabs" class="clearfix">
<ul id="remove">
<li class="btn_arrow_tab left inactive">
<a href="#" class="doubleText">Pay Monthly <small>View standard rates and Bolt Ons</small>
</a>
</li>
<li class="btn_arrow_tab right inactive">
<a href="#" class="doubleText">Pay & Go<small>View standard rates and Bolt Ons</small>
</a>
</li>
</ul>
</div>
我没有网络抓取的经验,并且尝试按照示例和文档点击按钮,文字为“每月付费”。然后,此按钮会动态显示我需要复制的一些文本。如何为初学者单击此选项,然后阅读显示的文本。我正在尝试与Selenium,美丽汤会更好吗?我一直在尝试这行代码,但它没有做任何事情:
driver.find_element_by_xpath("//a[text()[contains(.,'Pay Monthly')]]").click()
答案 0 :(得分:0)
使用绝对和相对xpath的混合来定位元素总是好的做法。
您应该找到的第一件事是具有唯一标识符的父级。您提到的元素有两个具有静态ID的父项。一个是根div
,另一个是ul
。
现在我们可以按照您的路径使用Text查找元素。以下任何一项都可以使用。
driver.find_element_by_xpath("//div[@id='tabs']//a[text()[contains(.,'Pay Monthly')]]").click()
driver.find_element_by_xpath("//ul[@id='remove']//a[text()[contains(.,'Pay Monthly')]]").click()
但是,如果该项目是静态元素并考虑到您的目标,我会建议以下方法。在返回多个元素时索引xpath。
myElement = driver.find_element_by_xpath("//div[@id='tabs']//a[@href='#'][1]")
myElement.click()
然后你可以捕获文本。您可以放置一些wait
以确保文本更改。
myText = myElement.text
如果这不起作用,请告诉我。