WebDriver API
注:这不是官方API文档,官方在这:Selenium Documentation
本篇覆盖了Selenium Webdriver的所有接口。
推荐导入样式 本节API展示了类的绝对位置。推荐的导入风格如下:
from selenium import webdriver
然后,可以访问的类如下:
webdriver.Firefox
webdriver.FirefoxProfile
webdriver.Chrome
webdriver.ChromeOptions
webdriver.Ie
webdriver.Opera
webdriver.PhantomJS
webdriver.Remote
webdriver.DesiredCapabilities
webdriver.ActionChains
webdriver.TouchActions
webdriver.Proxy
特殊键类(keys)可以这样导入:
from selenium.webdriver.common.keys import Keys
异常类可以这样导入(以实际的类名替换TheNameOfTheExceptionClass):
from selenium.common.exceptions import [TheNameOfTheExceptionClass]
API使用约定
一些属性(如方法)是可调用的,一些属性(如properties)是不可调用的,所有可调用的属性均以圆括号结尾。
属性的例子:
- current_url 当前加载页面的URL Usage: driver.current_url
方法的例子: * close() 选择关闭的窗口 Usage: driver.close()
异常
所有的webdriver代码都可能会触发异常
exception Selenium.common.exceptions.ElementNotSelectableException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.InvalidElementStateException
试图选择一个不能选择的元素时抛出 例如,选择“script"元素
exception selenium.common.exceptions.ElementNotVisibleException(msg=None,screen=None,stacktrace=None)
Bases:selenium.common.exceptions.InvalidElementStateException
当一个元素存在于DOM中,但是不可访问的,如果试图与之互动,则会触发该异常。 大多数情况是试图点击或读取试图中隐藏的元素的文本
exception selenium.common.exceptions.ErrorInResponseException(response, msg)
Bases: selenium.common.exceptions.WebDriverException
服务端发生错误时抛出 当和firefox插件或remote driver server通信时可能会触发
exception selenium.common.exceptions.ImeActivationFailedException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
当激活输入法引擎失败时触发
exception selenium.common.exceptions.ImeNotAvailableException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
IME支持不可用时。当平台上任何依赖IME的方法,调用IME不可用时,均会触发。
exception selenium.common.exceptions.InvalidCookieDomainException(msg=None, srceen=None, stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
试图在超出当前URL的不同域添加一个cookie时触发
exceptin selenium.common.exceptions.InvalidElementStateException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
exception selenium.common.exceptions.InvalidSelectorException(msg=None, screen=None, stacktrace=None)
Bases:selenium.common.exceptions.NoSuchElementException
当selector被用来查找返回一个不是WebElement时触发。 目前只用在当selector查找一个无效的 xpath或 xpath指向的不是一个WebElements.
exception selenium.common.exceptions.InvalidSwitchToTargetException(msg=None, screen=None,stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
当切换到的frame或窗口目标不存在时触发
exeption selenium.common.exceptions.MoveTargetOutOfBoundsException(msg=None, screen=None, stacktrace=None)
Bases:selenium.common.exceptions.WebDriverException
当供给ActionsChains move() 方法的目标无效时触发,如超出文本
exception selenium.common.exceptions.NoAlertPresentException(msg=None, screen=None, stacktrace=None)
Bases:selenium.common.exceptions.WebDriverException
当切换到没有弹出警告时触发。 当通过调用Alert()类的操作后,屏幕中未弹出警告窗口时触发。
exception selenium.common.exceptions.NoSuchAttributeException(msg=None,screen=None,stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
当元素的属性找不到时抛出 可能会检查测试时浏览器中属性。在不同浏览器中,相同的属性可能会有不同的名称。
exception selenium.common.exceptionsNoSuchElemention(msg=None, screen=None,stacktrace)
Bases: selenium.common.exceptions.WebDriverException
当元素找不到时抛出该异常。 如果遇到此异常,可能要检查以下内容: * 检查find_by...使用的selector * 元素在查找时没有在页面上 页面可能仍在加载中,需要使用wait方法去等待
exception selenium.common.exceptions.NoSuchFrameException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.InvalidSwitchToTargetException
当切换的Frame不存在时触发
exception selenium.common.exceptions.NoSuchWindowException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exceptions.InvalidSwitchToTargetException
当切换的窗口不存在时触发 要想获取当前活动窗口的句柄,可以通过下面的方法获取活动窗口的句柄列表: print driver.windown_handles
exception selenium.common.exceptions.RemoteDriverServerException(msg=None, screen=None,stacktrace=None)
Bases: selenium.common.exceptions.WebDriverException
exception selenium.common.exceptions.StaleElementReferenceException(msg=None. screen=None, stacktrace=None)
Bases:selenium.common.exceptions.WebDriverException
当引用一个过期的元素时触发该异常 过期的意思是不再在页面的DOM中出现。 触发StaleElementReferenceException的原因包括,但不限于: * 很长时间没有操作页面,当定位元素时,页面已经更新。 * 元素出现后,该元素可能被删除后重新添加到屏幕的。这可能发生在javascript框架更新和节点重建时。 * 元素可能在iframe中,或文本内容已更新
exception selenium.common.exceptions.TimeoutException(msg=Noe, scren=None, stacktrace=None)
Bases:selenium.common.exceptions.WebDriverException
当已命令没有在规定时间内完成时会触发该异常
exception selenium.common.exceptions.UnableToSetCookieException(msg=None, screen=None, stacktrace=None)
Bases: selenium.common.exeptions.WebDriverException
当driver设置cookie失败时抛出
exception selenium.common.exceptions.UnexpectdAlertPresentException(msg=None, screen=None, stacktrace=None, alert_text=None)
Bases:selenium.common.exceptions.WebDriverException
当未知的警告窗口弹出时抛出 通常阻止执行许多预期命令的webdriver时抛出
exception selenium.common.exceptions.UnexpectedTagNameException(msg=None, scren=None,stacktrace=None)
Bases:selenium.common.exceptions.WebDriverException
当支持的类没有得到预期的web元素时抛出
exception selenium.common.exceptions.WebDriverException(msg=None, screen=None, stacktrace=None)
Bases: exceptions.Exception
Webdriver 基本异常
动作链
该动作链实施,
class selenium.webdriver.common.action_chains.ActionChains(driver)
Base:object
ActionChains是底层自动化交互,比如鼠标移动,鼠标按键操作,按键和上下文交互菜单。可以用来做一些负责的动作比如悬停和拖放等。
生成用户操作
当你调用ActionChains 类的一些方法实现动作,这些动作可以存储到ActionChains类中。当你调用perform(),这些事件会顺序发射执行。
action_chains可以在链模式中使用:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".new #submen1")
action_chains(driver).move_to_element(menu).click(hidden_submenu).perform()
或动作一个接一个顺序执行:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_elment(menu)
actions.click(hidden_submenu)
actions.perform()
无论哪种方式,这些动作都会顺序调用执行。
click(on_element=None)
点击一个元素
Args: * on_element: 鼠标点击元素,如果没有,点击当前鼠标的位置。
click_and_hold(on_elememt=None)
按住在元素上按住鼠标左键
Args: * on_element: 鼠标点击元素,没有,点击当前鼠标的位置
context_click(on_element=None)
在元素上右击
Args: * on_element: 上下文点击该元素,如果没有,点击鼠标当前的位置
double_click(on_element=None)
双击元素
Args: * on_element: 双击该元素,如果,双击鼠标当前的位置
drag_and_drop(source, target)
在source element 左击并保持
然后移动到目标元素并且是否鼠标
Args: * source: 鼠标按下的元素
* target: 鼠标移动到元素
drag_and_drop_by_offset(source, xoffset, yoffset)
左击点击source element,
然后,移动到目标偏移地址,并释放鼠标
Args: * source: 鼠标点击的元素
* xoffset: 元素移动的X偏移量
* yoffset: 元素移动的Y偏移量
key_down(value, element=None)
仅发送一个按键,不释放(多用于组合键)
需要和修饰键一起使用(控制,alt和shift)
Aargs:
* value: 被发送的修饰键,在Keys类中定义
* element: 发送键作用的元素。如果为空,则向作用于当前焦点元素
例如,按下ctrl+c:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
key_up(value, element=None)
释放修饰键
Aargs:
* value: 发送的修饰键盘,在Keys类中定义。
* element: 作用于的元素,如果为空,默认作用于当前焦点元素
例如,按下ctrl+c:
ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
move_by_offset(xoffset, yoffset)
从当前鼠标位置,移动一定的偏移位置
Aargs:
* xoffset: X偏移量,可以为正或负的整数
* yoffset: y偏移量,可以为正或负的整数
move_to_element(to_element)
移动鼠标到元素的中间
Args: * to_element: 移动的目标WebElement
move_to_element_with_offset(to_element, xoffset, yoffset)
指定元素偏移一定量
偏移量相对于元素的左上角
Args: * to_elemnt: 被移动的WebElement
* xoffset: x偏移量
* yoffset: y偏移量
perform()
执行所有存储的操作
release(on_element=None)
释放作用于元素的按键
Args: * on_element: 指定作用的元素,如果为空,释放当前鼠标作用的位置
send_keys(*keys_to_send)
发送按键到当前焦点元素
Args: * keys_to_send: 发送的按键。修饰键常量可以在‘Keys'类中找到
send_keys_to_element(element, *keys_to_send)
发送按键到一个元素
Args: * element: 发送按键作用的元素
* keys_to_send: 发送的按键类型,修饰键常量可以在“Keys'类中找到。
Top^
上一篇Selenium主题6 下一篇Selenium主题8