zoukankan      html  css  js  c++  java
  • 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!!!
  • 相关阅读:
    day23
    day22
    day21
    day20
    小程序 组件操作
    jmeter安装使用一
    小程序登录操作
    Django ORM DateTimeField 时间误差8小时问题
    小程序初始篇
    ADB命令
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13608311.html
Copyright © 2011-2022 走看看