由于web自动化常常需要控制浏览器行为和操作页面元素,相关函数又比较多,于是再此记下一份Webdriver API查阅文档以备不时之需。

  参考:虫师《Selenium2自动化测试实战》,和http://selenium-python.readthedocs.io/api.html

 #coding=utf-8
from selenium import webdriver
driver=webdriver.Firefox()
driver.get('http://www.baidu.com/')
print 'driver attributes:'
print dir(driver)
Elem=driver.find_element_by_id('kw')
print 'WebElement attributes:'
print dir(Elem)

  输出结果:

driver attributes:
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_file_detector'
, '_is_remote', '_mobile', '_switch_to', '_unwrap_value', '_wrap_value', 'add_cookie', 'application_cache', 'back', 'capabilities',
'close', 'command_executor', 'create_options', 'create_web_element', 'current_url', 'current_window_handle', 'delete_all_cookies',
'delete_cookie', 'desired_capabilities', 'error_handler', 'execute', 'execute_async_script', 'execute_script', 'file_detector',
'file_detector_context', 'find_element', 'find_element_by_class_name', 'find_element_by_css_selector', 'find_element_by_id',
'find_element_by_link_text', 'find_element_by_name', 'find_element_by_partial_link_text', 'find_element_by_tag_name',
'find_element_by_xpath', 'find_elements', 'find_elements_by_class_name', 'find_elements_by_css_selector', 'find_elements_by_id',
'find_elements_by_link_text', 'find_elements_by_name', 'find_elements_by_partial_link_text', 'find_elements_by_tag_name',
'find_elements_by_xpath', 'forward', 'get', 'get_cookie', 'get_cookies', 'get_log', 'get_screenshot_as_base64',
'get_screenshot_as_file', 'get_screenshot_as_png', 'get_window_position', 'get_window_size', 'implicitly_wait', 'launch_app',
'log_types', 'maximize_window', 'mobile', 'name', 'orientation', 'page_source', 'quit', 'refresh', 'save_screenshot', 'service',
'session_id', 'set_page_load_timeout', 'set_script_timeout', 'set_window_position', 'set_window_size', 'start_client', 'start_session',
'stop_client', 'switch_to', 'switch_to_active_element', 'switch_to_alert', 'switch_to_default_content', 'switch_to_frame',
'switch_to_window', 'title', 'w3c', 'window_handles']

  调用语法:driver.属性名(注:Some attributes are callable (or methods) and others are non-callable (properties),以下列出的均为方法属性)

  常用属性:

 driver.find_element_by_id(id_)                        #查找元素的id
driver.find_element_by_name(name) #查找元素的name
driver.find_element_by_link_text(link_text) #查找元素的链接文本
driver.find_element_by_partial_link_text(link_text) #查找元素的链接的部分文本
driver.find_element_by_tag_name(name) #查找元素的标签名
driver.find_element_by_xpath(xpath) #查找元素的xpath
driver.find_elements_by_xpath(xpath) #查找元素内的子元素的xpath
driver.find_element_by_class_name(name) #查找一个元素的类名
driver.find_elements_by_class_name(name) #查找元素的类名
driver.find_element_by_css_selector(css_selector) #查找并返回一个元素的CSS 选择器
driver.find_elements_by_css_selector(css_selector) #查找并返回多个元素的CSS 选择器列表
 driver.get(url)                          #浏览器加载url。
driver.forward() #浏览器向前(点击向前按钮)
driver.back() #浏览器向后(点击向后按钮)
driver.refresh() #浏览器刷新(点击刷新按钮)
driver.close() #关闭当前窗口,或最后打开的窗口。
driver.quit() #关闭所有关联窗口,并且安全关闭session
driver.maximize_window() #最大化浏览器窗口
driver.set_window_size(宽,高) #设置浏览器窗口大小
driver.get_window_size() #获取当前窗口大小
driver.switch_to_window(窗口句柄) #切换到新窗口
driver.switch_to_frame(id或name属性值) #切换到新表单(同一窗口)。若无id或属性值,可先通过xpath定位到iframe,再将值传给switch_to_frame()
 driver.get_screenshot_as_file(filename)           #窗口截图
driver.switch_to_alert() #警告框处理。处理JavaScript所生成的alert,confirm,prompt.
driver.implicitly_wait(秒)            #隐式等待,通过一定的时长等待页面上某一元素加载完成。若提前定位到元素,则继续执行。若超过时间未加载出,则抛出NoSuchElementException异常
driver.execute_script(js) #调用js
driver.get_cookies() #获取当前会话所有cookie信息。
driver.get_cookie(cookie_name) #返回字典的key为“cookie_name”的cookie信息。
driver.add_cookie(cookie_dict) #添加cookie。“cookie_dict”指字典对象,必须有name和value值。
driver.delete_cookie(name,optionsString)  #删除cookie信息。
driver.delete_all_cookies() #删除所有cookie信息

  

输出结果: 

WebElement attributes:
['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', '_execute', '_id', '_parent', '_upload', '_w3c', 'clear', 'click', 'find_element', 'find_element_by_class_name',
'find_element_by_css_selector', 'find_element_by_id', 'find_element_by_link_text', 'find_element_by_name',
'find_element_by_partial_link_text', 'find_element_by_tag_name', 'find_element_by_xpath', 'find_elements',
'find_elements_by_class_name', 'find_elements_by_css_selector', 'find_elements_by_id', 'find_elements_by_link_text',
'find_elements_by_name', 'find_elements_by_partial_link_text', 'find_elements_by_tag_name', 'find_elements_by_xpath',
'get_attribute', 'id', 'is_displayed', 'is_enabled', 'is_selected', 'location', 'location_once_scrolled_into_view', 'parent', 'rect',
'screenshot', 'screenshot_as_base64', 'screenshot_as_png', 'send_keys', 'size', 'submit', 'tag_name', 'text', 'value_of_css_property']

  调用语法:driver.find_element*.属性名(注:Some attributes are callable (or methods) and others are non-callable (properties),以下列出的均为方法属性)

  常用属性:

 driver.find_element_by_*().clear()                   #清除文本
driver.find_element_by_*().send_keys(value) #模拟键盘输入
driver.find_element_by_*().click() #单击元素,可以作用于按钮、链接、复选框、单选框、下拉框
driver.find_element_by_*().submit() #用于表单提交,应用范围不及click()广泛
driver.find_element_by_*().get_attribute(name)   #获得属性值
driver.find_element_by_*().is_displayed()    #返回元素结果是否可见(True 或 False)
driver.find_element_by_*().is_selected()    #返回元素结果是否被选中(True 或 False)
driver.find_element_by_*().find_element_by_*() #定位元素,用于二次定位

补充:鼠标事件:perform()对所有鼠标事件进行存储,或者说是对所以操作都进行了提交

 #定位到要右击的元素
element =driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(qqq).perform() #定位到要双击的元素
element =driver.find_element_by_id("submit")
ActionChains(driver).double_click(qqq).perform() #定位元素的原位置
element = driver.find_element_by_name("source")
#定位元素要移动到的目标位置
target = driver.find_element_by_name("target")
ActionChains(driver).drag_and_drop(element, target).perform() #定位鼠标悬停的元素
element = self.find_element(*locator)
ActionChains(self.driver).move_to_element(element).perform()

Selenium2+Python:Webdriver API速记手册的更多相关文章

  1. 转:python webdriver API 之操作测试对象

    一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: cle ...

  2. 转:python webdriver API 之简单对象的定位

    对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要. (本书中用到的对象与元素同为一个事物)一个对象就像是一个人,他会有各种的特征(属性) , ...

  3. selenium2.0(WebDriver) API

    1.1  下载selenium2.0的包 官方download包地址:http://code.google.com/p/selenium/downloads/list 官方User Guide:  h ...

  4. 转:python webdriver API 之下载文件

    webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中.要想下载文件,首选要先确定你所要下载的文件的类型.要识别自动文件的下载类型可以使用 curl ,如图 ...

  5. 转:python webdriver API 之调用 JavaScript

    当 webdriver 遇到没法完成的操作时,笔者可以考虑借用 JavaScript 来完成,比下下面的例子,通过 JavaScript 来隐藏页面上的元素.除了完成 webdriver 无法完成的操 ...

  6. 转:python webdriver API 之定位一组对象

    webdriver 可以很方便的使用 find_element 方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,WebElement 接口同样提供了定位一组元素的方法 find_eleme ...

  7. 转:python webdriver API 之设置等待时间

    有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间.sleep(): 设置固定休眠时间. python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 slee ...

  8. 转:python webdriver API 之浏览器的操作

    1.1.浏览器最大化在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具进行结合,提升测试的灵活性及普遍适用性.比如可以跟 sikuli 结合,使用 sikuli 操作 flash.# ...

  9. 转:python webdriver API 之 获取对象的属性

    获取测试对象的属性能够帮我们更好的进行对象的定位.比如页面上有很多标签为 input 元素,而我们需要定位其中 1 个有具有 data-node 属性不一样的元素.由于 webdriver 是不支持直 ...

随机推荐

  1. html 7.29

    4.请判断以下说法是否正确:HTML 会被 XHTML 取代. 您的回答:错误 正确答案:正确 9.请判断以下说法是否正确:DOCTYPE 没有关闭标签. 您的回答:错误 正确答案:正确 13.下列哪 ...

  2. acm课程练习2--1002

    题目描述 Now, here is a fuction:  F(x) = 6 * x^7+8x^6+7x^3+5x^2-yx (0 <= x <=100)Can you find the ...

  3. MVC 创建Word文档

    /// <summary> /// 创建一个word /// </summary> /// <returns></returns> public Act ...

  4. AngularJS数据建模(转载)

    出处不明 我们知道,AngularJS并没有自带立等可用的数据建模方案.而是以相当抽象的方式,让我们在controller中使用JSON数据作为模 型.但是随着时间的推移和项目的成长,我意识到这种建模 ...

  5. OpenGL学习-------点、直线、多边形

    上一课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用许多短直线,甚至用点组合而成. ...

  6. jdb

    http://herongyang.com/jtool/jdb.html http://www.rhcedan.com/2010/06/22/killing-a-java-thread/ 用处:上去杀 ...

  7. Cow Hopscotch

    Cow Hopscotch 题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have inv ...

  8. CodeForces 614C Peter and Snow Blower

    简单计算几何,只要算出圆心到多边形上的最短距离和最长距离即可 #include<cstdio> #include<cstring> #include<cmath> ...

  9. JQuery UI 封装了一些常用模板

    1.css 他已经封装了一些css样式,如果不喜欢,可以直接修改. 2.js 他已经封装了对应的js.

  10. after和before的属性妙用

    ::after或::before设置它们的样式时有一个content这个属性这里可以写attr(data-label)其中data-label是标签上设置的data属性里的数据content:attr ...