Python “如何处理错误”;没有此类元素:无法定位元素“;如果在某些页面上,选择器不可用

Python “如何处理错误”;没有此类元素:无法定位元素“;如果在某些页面上,选择器不可用,python,python-3.x,selenium,selenium-webdriver,selenium-chromedriver,Python,Python 3.x,Selenium,Selenium Webdriver,Selenium Chromedriver,我有一个简单的脚本,可以从金融门户获取一些数据。它使用selenium/chromedriver进行导航,使用xpath定位网页上的元素。现在我对网页的结构有一个问题,因为在某些页面上,脚本能够从选择器获取数据,而在某些页面上,脚本无法获取数据(数据不显示/不可用)。在这种情况下,我收到错误信息: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate elemen

我有一个简单的脚本,可以从金融门户获取一些数据。它使用selenium/chromedriver进行导航,使用xpath定位网页上的元素。现在我对网页的结构有一个问题,因为在某些页面上,脚本能够从选择器获取数据,而在某些页面上,脚本无法获取数据(数据不显示/不可用)。在这种情况下,我收到错误信息:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:
我的问题是:知道在某些情况下数据不可用,我如何处理这个错误

我试图应用这样的代码来解决这个问题,但脚本仍然无法定位这个元素,并且克服了错误

if driver.find_element_by_xpath('//body/div[4]/div[2]/div[2]').is_displayed():
    PE_current_list.append(PE_current.text)
else:
    PE_current_list.append('na')

代替
if else
循环,将逻辑包装在
try/except{}
块捕获
TimeoutException
中,如下所示:

try:    
    WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//body/div[4]/div[2]/div[2]"))):
    PE_current_list.append(PE_current.text)
except TimeoutException:
    PE_current_list.append('na')

您可以使用try/catch,如果它引发
NoSuchElementException
,您将在列表中附加na。这里有一个例子:

from selenium.common.exceptions import NoSuchElementException

try:
    PE_current_list.append(driver.find_element_by_xpath('//body/div[4]/div[2]/div[2]').text)

except NoSuchElementException:
    PE_current_list.append('na')

@林吉尔很高兴能帮助你!!!如果这个/任何答案对你有帮助,对未来的读者有好处。