簡體   English   中英

Web元素可見並且已啟用,但是在帶有phantomJS的python硒中.click()失敗

[英]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 clickednext button located and clicked ,但兩個選項卡的IP輸出都是相同的(即,似乎從未單擊“ Next按鈕)。 此外,沒有引發異常。

因此,我的方法一定存在根本上的錯誤。

如何使用python / selenium在phantomJS中正確單擊可見和啟用的按鈕?

為了您的理解,這是我指的頁面部分的html:

目標HTML

據我了解,可能有兩種可能的原因:

  1. 該點擊未注冊,盡管這種可能性很小。 您可以查看其他點擊方式,例如JavascriptExecutor的點擊。

  2. (極有可能)在執行單擊之后以及加載第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM