2016-11-29 157 views
0

我想点击一个按钮上显示http://disqus.com/Python的硒按钮点击

的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的按钮的正确方法是什么?

UPDATE:

driver.switch_to.frame('myID') 

然后按类名加载:

element = driver.find_element_by_class_name('load-more') element.click()

注意:当它被执行对click()没有工作的时候切换到一个特定的iFrame曾任职像driver.find_element_by_class_name('load-more').click()

+0

正确的是'//一个[文本()=“显示更多“]',但是这个链接可以位于'iframe'内,所以你只能在'driver.switch_to_frame(iframe_id)'后面处理' – Andersson

+0

你可能需要等待元素可以通过使用'eleme nt_to_be_clickable' – ettanany

+0

有时用Selenium可以尝试一些选择元素的不同方法。有些页面使用一种方法比另一种更好。你有没有试过'find_elements_by_class_name(“btn load-more__button”)'? – Lost

回答

0

Xpath应该是查找元素的最后手段。对于你的情况,我会尝试

driver.find_element_by_class_name("load-more__button"));

使用btn load-more__button为化合物类名是无效的将无法正常工作。

如果仍然不起作用,建议在Xpath之前使用css选择器。

但是,如果这些选项都不起作用,并且您的Xpath仍然无法正常工作,则应该使用firebug add for Firefox来确保您使用的Xpath是正确的。

下面是我的一些其他的答案,可以帮助您开始使用萤火虫:

https://stackoverflow.com/a/38980488/3537915

https://stackoverflow.com/a/38723782/3537915

https://stackoverflow.com/a/38744577/3537915