由于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. pat L1-006. 连续因子

    L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字.例如630 ...

  2. NYOJ 925 国王的烦恼

    从最后一天开始往前加边. 同一天的边同时加到图上,加完之后检查集合数量是否和没加之前有变化. 有变化的话,答案就+1. #include<cstdio> #include <iost ...

  3. int与string转换

    参考: http://greatverve.cnblogs.com/archive/2012/10/24/cpp-int-string.html

  4. C# 上传文件至远程服务器

    C# 上传文件至远程服务器(适用于桌面程序及web程序) 2009-12-30 19:21:28|  分类: C#|举报|字号 订阅     最近几天在玩桌面程序,在这里跟大家共享下如何将本地文件上传 ...

  5. Codeforces Round #363 (Div. 2)D. Fix a Tree(并查集)

    D. Fix a Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  6. JAVA项目复习的一些小细节

    使用javadoc完成自动文档,这一段将在后期进行介绍. 类,方法和变量的作用域. 使用修饰符public和修饰符private,对于类和方法来说并没有什么不妥的,但是变量使用public却在某些时刻 ...

  7. 关于java.lang.reflect.InvocationTargetException(jar 包缺少或者冲突)的错误

    我在合肥那边运行了的是湖北石首市的项目没有错 可是回武汉之后 运行这个项目 点击这里的时候 就报错java.lang.reflect.InvocationTargetException   不是数据库 ...

  8. ViewController 视图控制器

    [父视图控制器 addChildViewController:子视图控制器]; 在此,图控制器A添加了另一个图控制器B,那么A充当父视图控制器,B充当子视图控制器.父视图控制器充当了视图控制器容器的角 ...

  9. Intellij Idea搭建java web项目(问题总结)

    这两天突发奇想下载了Intellij Idea,准备体验下这个传说中很强大IDE.工具下载就不多说了,网上一搜便知,博主是直接从Intellij官网下载的最新完整版,可惜的是只能使用30天,不过也差不 ...

  10. Hadoop的初步理解

    一.整体思维导图 二.HDFS(Hadoop分布式文件系统) 说明 NameNode:保存整个文件系统的目录信息.文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode ...