Python Selenium:使用 css,我如何制作 if else 语句?
Posted
技术标签:
【中文标题】Python Selenium:使用 css,我如何制作 if else 语句?【英文标题】:Python Selenium: Using css, how do I make an if else statement? 【发布时间】:2022-01-21 06:40:38 【问题描述】:我正在尝试创建一个 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()
似乎没有工作。
【问题讨论】:
如果它们都不存在怎么办。 【参考方案1】: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) 来检查。
【讨论】:
【参考方案2】:尝试如下并确认。
获取 List 中的 Element 并检查 List 是否为 Empty or not
。如果List的Length为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()
【讨论】:
【参考方案3】:使用try-except
块代替if-else
块并捕获异常以调用第二个元素的点击,如下所示:
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
【讨论】:
以上是关于Python Selenium:使用 css,我如何制作 if else 语句?的主要内容,如果未能解决你的问题,请参考以下文章
Selenium 使用 css、xpath、name、id (python) 找不到任何元素