[英]Web-element is visible and enabled but .click() fails in python selenium with phantomJS
我想單擊https://free-proxy-list.net/
上的Next
按鈕。 XPATH選擇器是//*[@id="proxylisttable_next"]/a
我使用以下代碼執行此操作:
element = WebDriverWait(driver, 2, poll_frequency = 0.1).until
(EC.visibility_of_element_located((By.XPATH, '//*[@id="proxylisttable_next"]/a')))
if (element.is_enabled() == True) and (element.is_displayed() == True):
element.click()
print "next button located and clicked" # printed in case of success
隨后,我從表中獲取所有IP,如下所示:
IPs = WebDriverWait(driver, 2, poll_frequency = 0.1).until
(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ':nth-child(n) > td:nth-child(1)')))
盡管所有選項卡的CSS_selector都相同,並且雖然找到next button located and clicked
了next button located and clicked
,但兩個選項卡的IP輸出都是相同的(即,似乎從未單擊“ Next
按鈕)。 此外,沒有引發異常。
因此,我的方法一定存在根本上的錯誤。
如何使用python / selenium在phantomJS中正確單擊可見和啟用的按鈕?
為了您的理解,這是我指的頁面部分的html:
據我了解,可能有兩種可能的原因:
該點擊未注冊,盡管這種可能性很小。 您可以查看其他點擊方式,例如JavascriptExecutor的點擊。
(極有可能)在執行單擊之后以及加載第2頁結果之前立即查詢find元素。 由於元素可以從第1頁上看到,因此它會立即與第1頁上的元素列表一起退出。這樣做的理想方式是(使用psuedocode,因為我對python不熟悉)
一種。 獲取當前頁碼
灣 從當前頁面獲取所有IP
C。 點擊下一步
d。 檢查(當前頁+ 1)頁是否已變為活動狀態(“活動”類已添加到數字2中)
即 從當前頁面獲取所有元素
我是OP,對於遇到類似問題的任何人-在選擇它之后,不再將Next
元素附加到DOM,這StaleElementReferenceException
在打印element.is_enabled()
或單擊它時導致StaleElementReferenceException
可以在此處找到詳細的解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.