在定位元素的时候,经常会遇到各种异常,遇到异常又该如何处理呢?本篇通过学习selenium的exceptions模块,了解异常发生的原因。
一、发生异常
打开百度搜索首页,定位搜索框,此元素id="kw"。为了故意让它定位失败,我在元素属性后面加上xx,运行失败后如下图所示,程序在定位搜索框的这一行发生了中断,不会继续执行后续代码了。
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
element = driver.find_element('id', 'kwxx')
element.send_keys('python')
time.sleep(5)
二、捕获异常
为了让程序继续执行,我们可以用 try...except... 捕获异常。捕获异常后可以打印出异常原因,这样以便于分析异常原因。从如下异常内容可以看出,发生异常原因是:NoSuchElementException。selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="kwxx"]"}
从 selenium.common.exceptions 导入 NoSuchElementException 类。
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
try:
element = driver.find_element('id', 'kwxx')
except NoSuchElementException as e:
print("报错:{}".format(e))
else:
element.send_keys('python')
三、selenium常见异常
NoSuchElementException:没有找到元素
NoSuchFrameException:没有找到iframe
NoSuchWindowException:没找到窗口句柄handle
NoSuchAttributeException:属性错误
NoAlertPresentException:没找到alert弹出框
ElementNotVisibleException:元素不可见
ElementNotSelectableException:元素没有被选中
TimeoutException:查找元素超时