訪問某些使用 selenium 的網站時,有時頁面無法正確加載。所以我想撰寫一個代碼,通過搜索特定按鈕來檢查網站是否正確加載。如果找不到按鈕,則需要重繪 ,直到找到按鈕,如果代碼確實找到了按鈕,則需要執行其余代碼。
例如:按鈕不存在:>>> 重繪 >>>(如果按鈕不存在則再次檢查)按鈕不存在 >>> 重繪 >>>(如果按鈕不存在則再次檢查)按鈕存在 >>> 休息代碼
我目前的回圈看起來像這樣,但重繪 回圈后,回圈不會重新啟動并運行 else: 函式。所以問題是我如何制作一個回圈,在它重繪 后重新啟動回圈。
while not (driver.find_elements(By.CLASS_NAME, "button")):
driver.refresh()
else:
Rest of code
幫助將不勝感激,提前致謝
uj5u.com熱心網友回復:
你可以有一個無限的 while 回圈和一個 if 條件find_elements,請注意它find_elements不回傳任何例外,它回傳一個 web 元素串列或 0。
代碼:
while True:
try:
if len(driver.find_elements(By.XPATH, "xpath of the button")) >0:
print("Button is present, since find elements list is non empty")
# execute the code, may be click on the button or whatever it is.
#make sure to exit from infinite loop as well
break
else:
driver.refresh()
#may be put some delay here to let button available to click again.
except:
print("There was some problem trying to find the button element, tearing it down")
break
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/398285.html
上一篇:如果花費太長,則跳過回圈中的迭代
