【问题标题】:Python Selenium find_element_by_id with default if not foundPython Selenium find_element_by_id 如果未找到,则默认为
【发布时间】:2021-07-13 10:55:27
【问题描述】:

我想通过 id 在页面上查找元素。问题是这个元素只是暂时的,不会一直存在。因此我想设置默认值,这样我就可以在这样的条件下检查它:

    covidPopUp = driver.find_element_by_id("sgpb-popup-dialog-main- 
    div").extract(default='not-found')

    if(covidPopUp == 'not-found'):
        load_more_btn = driver.find_element_by_id("load_more_button")
        load_more_btn.click()
    else:
        popUpClose = driver.find_element_by_id("sgpb-popup-close-button-6")
        popUpClose.click()

但是,这会产生以下错误:

AttributeError: 'WebElement' object has no attribute 'extract'

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping scrapy


    【解决方案1】:

    我认为你有几个选择。

    1. 使用find_element_by_id 但捕获异常
    from selenium.common.exceptions import NoSuchElementException
    try:
        covidPopUp = driver.find_element_by_id("sgpb-popup-dialog-main-div")
    except NoSuchElementException:
        covidPopUp = "not-found"
    
    1. 使用find_elements_by_id(注意复数)并检查列表是否不为空。
    covidPopUp = driver.find_elements_by_id("sgpb-popup-dialog-main-div")
    covidPopUp = covidPopUp[0] if covidPopUp else "not-found"
    

    【讨论】:

      猜你喜欢
      • 2016-09-01
      • 2015-12-02
      • 1970-01-01
      • 2019-04-12
      • 2013-02-25
      • 2010-11-22
      • 2020-08-16
      • 2023-02-05
      • 2019-11-24
      相关资源
      最近更新 更多