driver = webdriver.Chrome(driver_path, options=chrome_options)
wait = WebDriverWait(driver, 20)
driver.get('https://%s/' % asset_id)
wait.until(EC.presence_of_element_located((By.XPATH, "//*[@id='dev_diaginfo_fid']")))
print(driver.find_element_by_xpath('//*[@id='dev_diaginfo_fid']").get_attribute=("innerHTML"))
我可以登錄網站,Selenium 回傳 WebElement,但從該 WebElement 回傳文本時不一致。有時它會回傳它,而有時它似乎加載速度不夠快(使用它的網路速度很慢)并且根本不回傳任何資料,但我仍然可以看到 WebElement 本身,而不是資料。資料通過JS動態加載。可能不相關,但我使用 send_keys 傳遞登錄所需的憑據,然后加載帶有該版本的頁面。
有沒有辦法使用 ExpectedCondition (EC) 等到它看到文本后再繼續?我正在嘗試從網路設備中提取韌體版本,它找到了韌體元素,但在回傳實際韌體版本時不一致。如前所述,網路速度偶爾會出現問題,所以我懷疑它在加載韌體編號之前就在繼續。此設備無法訪問 Internet,因此我無法共享 URL。我可以確認我已經拉取了韌體版本,但它只是不一致。
我試過將它傳遞給 beautifulsoup 并且可以驗證它是否看到韌體版本:但內部標簽為空。
編輯:我也試過 EC.visibility_of_all_elements 和 EC.visibility_of_element 也沒有運氣。
uj5u.com熱心網友回復:
這是一個想法。
嘗試 while 回圈,直到看到文本。
counter = 0
elem = driver.find_element_by_xpath("//*[@id='dev_diaginfo_fid']").get_attribute=("innerHTML")
while "" in elem:
pause(500)
elem = driver.find_element_by_xpath("//*[@id='dev_diaginfo_fid']").get_attribute=("innerHTML")
if "" not in elem:
print("Success! The text is: " elem)
break
if counter > 20:
print("Text still not found!")
break
counter = 1
顯然,調整回圈以滿足您的需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/329953.html
