Python Selenium异常处理的实例分析

  • Post category:Python

下面是详细的Python Selenium异常处理的实例分析攻略:

1. 简介

Python Selenium是一个常用的Web自动化测试工具,但是在使用过程中,可能会遇到各种异常情况。为了保证程序的稳定性和鲁棒性,我们需要进行异常处理。本文将结合实例,详细说明Python Selenium异常处理的实现方法。

2. 异常处理的基本方法

在Python Selenium中,一般使用try…except…finally语句对异常进行处理。我们通常会在try中编写可能发生异常的代码,如果发生异常,就会跳转到except,进行异常处理,并执行指定的代码块。最后,无论是否发生异常,都会执行finally中的代码块。

举个例子,假设我们要执行以下代码,打开一个不存在的网页,并获取它的标题。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.notexist.com")
title = driver.title
print(title)
driver.quit()

当我们运行以上代码时,由于打开的页面不存在,就会抛出NoSuchElementException异常,导致程序中断。

这个时候我们可以使用try…except…finally进行处理,代码如下:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Chrome()
try:
    driver.get("http://www.notexist.com")
    title = driver.title
    print(title)
except NoSuchElementException as e:
    print("元素未找到!")
finally:
    driver.quit()

在上面的代码中,我们使用了try…except…finally语句,并捕获了NoSuchElementException异常。如果发生异常,就会执行except中的代码块,输出”元素未找到!”,并继续执行finally中的代码块,关闭浏览器。

3. 示例1:处理元素未找到异常

接下来,我们来看一个实际应用的例子。假设我们要在百度搜索框中,输入关键字”Python Selenium”,并获取搜索结果的数量。代码如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
search_input = driver.find_element_by_id("kw1")
search_input.send_keys("Python Selenium")
search_input.submit()
result = driver.find_element_by_xpath('//div[@class="nums_text"]')
print(result.text)
driver.quit()

当我们运行以上代码时,由于搜索框的id被写错了,无法找到该元素,就会抛出NoSuchElementException异常,导致程序中断。

这个时候我们可以使用try…except…finally进行处理,代码如下:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Chrome()
try:
    driver.get("https://www.baidu.com/")
    search_input = driver.find_element_by_id("kw1")
    search_input.send_keys("Python Selenium")
    search_input.submit()
    result = driver.find_element_by_xpath('//div[@class="nums_text"]')
    print(result.text)
except NoSuchElementException as e:
    print("元素未找到!")
finally:
    driver.quit()

在上面的代码中,我们使用了try…except…finally语句,并捕获了NoSuchElementException异常。如果发生异常,就会执行except中的代码块,输出”元素未找到!”,并继续执行finally中的代码块,关闭浏览器。

4. 示例2:处理超时异常

除了元素未找到异常,还有一种常见的异常是超时异常。我们通常会在get()和find_element()等操作中,设置超时时间,如果在规定时间内还没有完成操作,就会抛出超时异常。为了避免程序因超时而中断,我们需要对超时异常进行处理。

假设我们要打开一个网页,但网络不稳定,导致加载速度变慢,超出了设置的超时时间。代码如下:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

opt = webdriver.ChromeOptions()
opt.add_argument("--start-maximized")
driver = webdriver.Chrome(options=opt)
try:
    driver.set_page_load_timeout(3)
    driver.get("https://www.baidu.com/")
except TimeoutException as e:
    print("页面加载超时!")
finally:
    driver.quit()

当我们运行以上代码时,由于设置了3秒的超时时间,但是网络不好,页面没有在3秒内加载完成,就会抛出超时异常,导致程序中断。

这个时候我们可以使用try…except…finally进行处理,代码如下:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

opt = webdriver.ChromeOptions()
opt.add_argument("--start-maximized")
driver = webdriver.Chrome(options=opt)
try:
    driver.set_page_load_timeout(3)
    driver.get("https://www.baidu.com/")
except TimeoutException as e:
    print("页面加载超时!")
finally:
    driver.quit()

在上面的代码中,我们使用了try…except…finally语句,并捕获了TimeoutException异常。如果发生异常,就会执行except中的代码块,输出”页面加载超时!”,并继续执行finally中的代码块,关闭浏览器。

5. 总结

Python Selenium是一个常用的Web自动化测试工具,在使用过程中,可能会遇到各种异常情况。为了保证程序的稳定性和鲁棒性,我们需要进行异常处理。本文通过实例分析,详细讲解了Python Selenium异常处理的实现方法,涵盖了元素未找到异常和超时异常的处理方法。希望能对读者有所帮助。