【问题标题】:Python Selenium: Using css, how do I make an if else statement?Python Selenium:使用 css,我如何制作 if else 语句?
【发布时间】: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()

似乎没有工作。

【问题讨论】:

  • 如果它们都不存在怎么办。

标签: css selenium selenium-webdriver css-selectors


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2022-07-23
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        • 2020-09-27
        • 2014-03-21
        • 2020-04-29
        • 2019-08-20
        相关资源
        最近更新 更多