【发布时间】:2016-11-29 16:21:46
【问题描述】:
我正在尝试单击一个按钮以在 http://disqus.com/ 的讨论线程上显示更多 cmets
HTML 如下所示:
<div class="load-more" data-role="more" style="">
<a href="#" data-action="more-posts" class="btn load-more__button">Show more</a>
</div>
我尝试使用按钮中的 xPath,如下所示:
driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
driver.get(url)
driver.find_element_by_xpath('''//*[@id="posts"]/div[3]/a''').click()
但是我得到了 NoSuchElement 异常。
单击具有那种 HTML 类型的按钮的正确方法是什么?
更新:当我切换到特定的 iFrame 时工作:
driver.switch_to.frame('myID')
然后按类名加载:
element = driver.find_element_by_class_name('load-more')
element.click()
注意:click() 在像driver.find_element_by_class_name('load-more').click() 这样的同一行上执行时不起作用
【问题讨论】:
-
正确的是
//a[text()="Show more"],但是这个链接可能在iframe里面,所以只能在driver.switch_to_frame(iframe_id)之后处理 -
您可能需要使用
element_to_be_clickable等待元素可点击 -
有时使用 Selenium 尝试几种不同的选择元素的方法是值得的。有些页面使用一种方法比另一种更好。你试过
find_elements_by_class_name("btn load-more__button")吗?
标签: python selenium web-crawler