我正在嘗試創建一個 if else 來檢查 css 是否存在。
如果第一個 css 不存在,則應單擊第二個 css。
這就是我所擁有的:
#IF STATEMENT
driver.find_element_by_css_selector('.GA_Track_Action_Download-FullHD-1080p > .movieQuality').click()
#ELSE STATEMENT
driver.find_element_by_css_selector('.GA_Track_Action_Download-4K-2160p > .movieQuality').click()
我試過的:
if is_element_exist(driver, '.GA_Track_Action_Download-FullHD-1080p > .movieQuality''):
driver.find_element_by_css_selector('.GA_Track_Action_Download-FullHD-1080p > .movieQuality').click()
else:
driver.find_element_by_css_selector('.GA_Track_Action_Download-4K-2160p > .movieQuality').click()
似乎沒有作業。
uj5u.com熱心網友回復:
嘗試如下并確認。
獲取元素的串列,并檢查串列是Empty or not。如果串列的長度為0,則將執行 中的陳述句else block。
if len([driver.find_element(By.CSS_SELECTOR,".GA_Track_Action_Download-FullHD-1080p > .movieQuality")]) > 0:
driver.find_element(By.CSS_SELECTOR, ".GA_Track_Action_Download-FullHD-1080p > .movieQuality").click()
else:
driver.find_element(By.CSS_SELECTOR,".GA_Track_Action_Download-4K-2160p > .movieQuality").click()
uj5u.com熱心網友回復:
代替if-else塊使用try-except{}塊并捕獲例外以呼叫第二個元素上的單擊,如下所示:
try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".GA_Track_Action_Download-4K-2160p > .movieQuality"))).click()
except TimeoutException:
driver.find_element(By.CSS_SELECTOR,".GA_Track_Action_Download-4K-2160p > .movieQuality").click()
注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
uj5u.com熱心網友回復:
try:
driver.find_element(By.CSS_SELECTOR,".GA_Track_Action_Download-FullHD-1080p > .movieQuality,.GA_Track_Action_Download-4K-2160p > .movieQuality").click()
except:
pass
為什么不直接使用 ,(OR) 來檢查兩者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/393236.html
上一篇:InvalidSessionIdException:訊息:無效的會話ID使用Selenium和Python在回圈中截取螢屏截圖
