Python Selenium find_element_by_id 如果找不到则默认
Python Selenium find_element_by_id with default if not found
我想通过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'
我想你有几个选择。
- 使用
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"
- 使用
find_elements_by_id
(注意复数)并检查列表是否为空。
covidPopUp = driver.find_elements_by_id("sgpb-popup-dialog-main-div")
covidPopUp = covidPopUp[0] if covidPopUp else "not-found"
我想通过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'
我想你有几个选择。
- 使用
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"
- 使用
find_elements_by_id
(注意复数)并检查列表是否为空。
covidPopUp = driver.find_elements_by_id("sgpb-popup-dialog-main-div")
covidPopUp = covidPopUp[0] if covidPopUp else "not-found"