Selenium Webdriver - 例外


如果发生错误、任何方法失败或发生意外错误,则会引发异常。在Python中,所有异常都是从BaseException类获取的。

Selenium例外情况

下面列出了一些常见的 Selenium 例外情况 -

  • ElementNotInteractableException - 如果 Web 元素附加到 DOM,但在尝试访问同一个 Web 元素时会访问不同的 Web 元素,则会抛出该异常。

  • ElementClickInterceptedException - 如果由于覆盖该 Web 元素的另一个 Web 元素接收到单击而无法发生 Web 元素上的单击操作,则抛出该异常。

  • ElementNotVisibleException - 如果 Web 元素附加到 DOM,但在页面上不可见且无法访问,则会抛出该异常。

  • ElementNotSelectableException - 如果我们尝试选择不可选择的 Web 元素,则会抛出该异常。

  • ImeActivationFailedException - 如果我们无法激活 IME 引擎,则会抛出该异常。

  • ErrorInResponseException - 如果服务器端出现问题,则会抛出该异常。

  • InsecureCertificateException - 如果用户在导航应用程序时收到证书警告,则会抛出该异常。这是由于 TLS 证书不再有效。

  • ImeNotAvailableException - 如果不支持 IME 引擎,则会抛出该异常。

  • InvalidCookieDomainException - 如果我们尝试在当前 URL 之外的不同域下添加 cookie,则会抛出该异常。

  • InvalidArgumentException - 如果传递给命令的参数不再有效,则抛出该异常。

  • InvalidElementStateException - 如果我们尝试访问不处于有效状态的 WebElement,则会抛出该异常。

  • InvalidCoordinatesException - 如果交互的坐标无效,则会抛出该异常。

  • InvalidSessionIdException - 如果会话 ID 在实时会话组中不可用,则会抛出该异常。因此,给定的会话要么不存在,要么不活动。

  • InvalidSelectorException - 如果用于标识元素的定位器未产生 Web 元素,则会抛出该异常。

  • MoveTargetOutOfBoundsException - 如果 ActionChains 方法中给定的目标超出文档的范围,则会抛出该异常。

  • InvalidSwitchToTargetException - 如果要切换到的框架 ID/名称或窗口句柄 ID 不正确,则会抛出该异常。

  • NoSuchAttributeException - 如果未检测到元素属性,则抛出该异常。

  • NoAlertPresentException - 如果我们尝试切换到不存在的警报,则会抛出该异常。

  • NoSuchFrameException - 如果我们尝试切换到不存在的框架,则会抛出该异常。

  • StaleElementReferenceException - 如果元素引用当前已过时,则抛出该异常。

  • NoSuchWindowException - 如果我们尝试切换到不存在的窗口,则会抛出该异常。

  • UnexpectedAlertPresentException - 如果自动化流程中意外出现警报,则会抛出该异常。

  • UnableToSetCookieException - 如果网络驱动程序设置 cookie 失败,则会抛出该异常。

  • UnexpectedTagNameException - 如果支持类未收到预期的 Web 元素,则会抛出该异常。

  • NoSuchElementException - 如果使用的选择器无法找到 Web 元素,则会抛出该异常。

让我们看一个引发异常的代码示例。

代码实现

Selenium 异常的代码实现如下 -

from selenium import webdriver
driver = webdriver.Chrome(executable_path='../drivers/chromedriver')
#implicit wait time
driver.implicitly_wait(5)
#url launch
driver.get("https://www.tutorialspoint.com/about/about_careers.htm")
#identify element with an incorrect link text value
l = driver.find_element_by_link_text('Teams')
l.click()
#driver quit
driver.quit()

输出

Selenium例外情况

输出显示消息 - Process with exit code 1 表示上述 Python 代码遇到错误。此外,由于定位器链接文本无法检测到页面上的链接 Teams,因此会引发 NoSuchElementException。