我試圖讓 Selenium 等到加載器 div 不可見。
這些是我的進口:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support.ui import expected_condition as EC
我首先單擊一個按鈕以打開一個包含表資料的彈出視窗。
action.click()
action.perform()
單擊后,我必須等到可以按下按鈕將這些資料匯出到檔案中。然而,我必須等待的時間變化很大。有時10秒有時幾分鐘。在此部分加載時,會出現一個加載程式,這會阻止我單擊螢屏上的任何位置。
我試圖讓 Selenium 等到這個加載器消失。但是,由于某種原因,腳本根本不等待。甚至不是傳遞給顯式等待函式的最長時間。
time.sleep(10)
print("Waiting for button")
wait = WebDriverWait(driver, 30) # I am just testing with 30, it will be a larger value
wait.until(EC.invisibility_of_element((By.XPATH, "//div[@class='loader']")))
print("Finished Waiting for button")
driver.find_element_by_xpath("//button[@class='export']").click()
首先,我讓 Selenium 等待 10 秒,以便加載器元素可以實際顯示,它已經在 1-2 秒內顯示出來。之后,我使用列印陳述句來檢查腳本實際等待的時間。腳本根本不等待。它立即繼續,然后導致錯誤,因為該按鈕尚不可點擊。
uj5u.com熱心網友回復:
您正在傳遞By.locatorso 而不是invisibility_of_element()您必須使用invisibility_of_element_located().
首先等待可見性,然后是元素的不可見性,您需要:
首先為visibility_of_element_located()引入WebDriverWait
然后為invisibility_of_element引入WebDriverWait如下:
WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='loader']"))) WebDriverWait(driver, 30).until(EC.invisibility_of_element_located((By.XPATH, "//div[@class='loader']")))注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376138.html
