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) 找不到任何元素

Python Selenium:使用 css,我如何制作 if else 语句?

Selenium python,使用css只选择两个类

Selenium2+python自动化9-CSS定位语法

Selenium2+python自动化9-CSS定位语法

python+selenium自动化测试——CSS选择元素