2016-11-29 287 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