Selenium3+python3自动化(三十七)--捕获异常(NoSuchElementException)、try...except

前言

在定位元素的时候,经常会遇到各种异常,为什么会发生这些异常,遇到异常又该如何处理呢?

本篇通过学习selenium的exceptions模块,了解异常发生的原因。

一、发生异常

1.打开百度首页,F12查看“百度一下”的属性

<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">

2.为了故意让它定位失败,我在元素属性后加上xx

3.执行代码,报错。程序在查找元素的这行发生了中断,不会继续执行click事件了

参考代码:

# coding:utf-8
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element_by_id("suxx").click()

 运行结果:

Traceback (most recent call last):
  File "E:/study/selenium_study/a825.py", line 5, in <module>
    driver.find_element_by_id("suxx").click()
  File "D:Program Filespython37libsite-packagesseleniumwebdriver
emotewebdriver.py", line 360, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "D:Program Filespython37libsite-packagesseleniumwebdriver
emotewebdriver.py", line 978, in find_element
    'value': value})['value']
  File "D:Program Filespython37libsite-packagesseleniumwebdriver
emotewebdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "D:Program Filespython37libsite-packagesseleniumwebdriver
emoteerrorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="suxx"]"}
  (Session info: chrome=84.0.4147.135)

 二、捕获异常

1.为了让程序继续执行,我们可以用try...except...捕获异常。捕获异常后可以打印出异常原因,以便于分析异常原因。

2.从运行结果看出,发生异常原因是:NoSuchElementException

3.从selenium.common.exceptions 导入 NoSuchElementException类

# coding:utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
try:
    s=driver.find_element_by_id("suxx")
except NoSuchElementException as msgs:
    print("查找元素异常:{}".format(msgs))
else:
    s.click()

 运行结果:

查找元素异常:Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="suxx"]"}
  (Session info: chrome=84.0.4147.135)

 三、selenium常见异常

1.NoSuchElementException:没有找到元素

2.NoSuchFrameException:没有找到iframe

3.NoSuchWindowException:没找到窗口句柄handle

4.NoSuchAttributeException:属性错误

5.NoAlertPresentException:没找到alert弹出框

6.ElementNotVisibleException:元素不可见

7.ElementNotSelectableException:元素没有被选中

8.TimeoutException:查找元素超时

四、可以不导入异常类,直接写Exception

# coding:utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
try:
    s=driver.find_element_by_id("suxx")
except Exception as msgs:
    print("查找元素异常:{}".format(msgs))
else:
    s.click()

 运行结果:

 

查找元素异常:Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="suxx"]"}
  (Session info: chrome=85.0.4183.83)

  

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/13608311.html