异常 ========== 所有的页面驱动代码里都可能抛出异常。 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 异常