所有的页面驱动代码里都可能抛出异常。
exception selenium.common.exceptions.ElementNotSelectableException(msg=None,screen=None,stacktrace=None)
基于 selenium.common.exceptions.InvalidElementStateException
当试图选中一个不能选中的元素时抛出
例如,选中一个 script
元素
exception selenium.common.exceptions.ElementNotVisibleException(msg=None,screen=None,stacktrace=None)
基于 selenium.common.exceptions.InvalidElementStateException
当DOM上存在元素但是不可用时,它是不可以进行交互的
最常见的场景是试图点击或者阅读一个隐藏的元素
exception selenium.common.exceptions.ErrorInResponseException(response,msg)
基于 selenium.common.exception.WebDriverException
服务端发生错误
这个异常可能会在 和 firefox扩展或者 远程驱动服务交互时产生
exception selenium.common.exceptions.ImeActivationFailedException(msg=None,screen=None,stacktrace=None)
基于 selenium.common.exceptions.WebDriverException
激活一个 IME引擎失败
exception selenium.common.exceptions.ImeNotAvailableException(msg=None,screen=None,stacktrace=None)
基于 selenium.common.exceptions.WebDriverException
IME支持不可用。 如果 机器上IME支持不可用,这个异常会在所有和IME相关的方法里抛出
exception selenium.common.exceptions.InvalidCookieDomainException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
试图在一个和当前不同的域名下添加cookie
exception selenium.common.exceptions.InvalidElementStateException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
exception selenium.common.exceptions.InvalidSelectorException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.NoSuchElementException
选择器用来寻找元素,但返回的不是一个 WebElement时。 目前只会在XPath表达式选择器里产生,XPath表达式语法错误或者没有选择WebElement时(例:count(//input))
exception selenium.common.exceptions.InvalidSwitchToTargetException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
要切换的窗口或者框架不存在时
exception selenium.common.exceptions.MoveTargetOutOfBoundsException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
提供给 ActionsChains
move()方法的 目标不可用。
exception selenium.common.exceptions.NoAlertPresentException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
屏幕没有警告框时,切换到警告框
exception selenium.common.exceptions.NoSuchAttributeException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
元素找不到这个属性。
你可能会想在另外一个浏览器上检查某个属性是否存在,有些浏览器相同的属性有不同的属性名 (IE8的 innerText和 Firefox的 textContent)
exception selenium.common.exceptions.NoSuchElementException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
找不到元素
如果你发现这个错误,你可能会想要检查下面的东西:
- 检查你`find_by...`函数里用的选择器
- 查找元素的时候页面上还没有这个元素
(页面正在加载)请查阅 selenium.webdriver.support.wait.WebDriverWait()
来了解如何等待元素的出现
exception selenium.common.exceptions.NoSuchFrameException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.InvalidSwitchToTargetException
要切换的目标框架不存在
exception selenium.common.exceptions.NoSuchWindowException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.InvalidSwitchToTargetException
要切换的目标窗口不存在。
要找到当前活动窗口的句柄,你可以用下面的方法来获取一个句柄列表:
print driver.window_handles
exception selenium.common.exceptions.RemoteDriverServerException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
exception selenium.common.exceptions.StaleElementReferenceException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
当一个元素的引用 变旧
变旧的意思是这个元素不在出现在页面的DOM里
可能出现这个异常的原因包括但不限于:
- 你不在同一个页面,或者你获取到元素之后页面被刷新了
- 元素被定位后 被移动了又重新加到屏幕上,这样元素就被重置了。典型的例子是javascript框架当值改变,节点就被重建了
- 元素所在的框架或者其他内容被刷新了
exception selenium.common.exceptions.TimeoutException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
规定时间内一个命令没有执行完
exception selenium.common.exceptions.UnableToSetCookieException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
驱动设置cookie失败
exception selenium.common.exceptions.UnexpectedAlertPresentException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
预料之外的警告框。当一个警告框阻塞了webdriver,不能执行任何命令的时候。
exception selenium.common.exceptions.UnexpectedTagNameException(msg=None, screen=None, stacktrace=None)
基于:selenium.common.exceptions.WebDriverException
当一个支持的类没有拿到预料的web元素时
exception selenium.common.exceptions.WebDriverException(msg=None, screen=None, stacktrace=None)
基于:exceptions.Exception
基本的 webdriver 异常