在selenium自动化中用的最多的就是webdriver了,通过webdriver可以操作浏览器以及网页上的控件,这里对webdriver常用方法进行汇总,以便参考
1. 什么是 WebDriver?
* WebDriver是针对各个浏览器而开发,与浏览器的紧密集成支持创建更高级的测试。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。WebDriver支Firefox(FirefoxDriver)、IE (InternetExplorerDriver)、Opera(OperaDriver)和Chrome(ChromeDriver)。它还支持Android (AndroidDriver)和iPhone(IPhoneDriver)的移动应用测试。它还包括一个基于HtmlUnit的无界面实现,称为HtmlUnitDriver。WebDriver API可以通过Python、Ruby、Java和C#访问,支持开发人员使用他们偏爱的编程语言来创建测试。
2. 如何调用不同浏览器的WebDriver?
* 调用IE浏览器的webdriver:
driver = webdriver.Ie()
* 调用Chrome浏览器的webdriver:
driver = webdriver.Chrome()
* 调用Firefox的webdriver:
driver = webdriver.Firefox()
* 调用Opera的webdriver:
driver = webdriver.Opera()
* 调用Htmlunitdriver:
driver = webdriver.Remote(desired_capabilities=DesiredCapabilities.HTMLUNIT)
3. 针对浏览器本身的一些常用操作:
* 访问某个网站链接(例如访问百度):driver.get("http://www.baidu.com")
* 浏览器最大化:driver.maximize_window()
* 设置浏览器的宽和高:driver.set_window_size(480,800)
(#宽为480,高为800)
* 浏览器的前进:driver.forward()
* 浏览器的后退:driver.back()
4. 元素定位,元素定位实例请看另一篇'WebDriver 元素定位实例'
* webdriver 提供了一系列的元素定位方法,常用的有以下几种: (id,name , class name, tag name, link text,partial link text,xpath, cssselector)
* 分别对应 python webdriver 中的方法为:
§find_element_by_id()
§find_element_by_name()
§find_element_by_class_name()
§find_element_by_tag_name()
§find_element_by_link_text()
§find_element_by_partial_link_text()
§find_element_by_xpath()
§find_element_by_css_selector()
5. 定位只是第一步,定位之后需要对这个对象进行操作,webdriver 中最常用的操作元素的方法有下面几个:
* clear()清除元素的内容
* send_keys() 在元素上输入内容
* click()单击元素
* select_by_XX() 选择下拉框内容
6. 鼠标事件常用方法:
* context_click() 右击
* double_click() 双击
* drag_and_drop() 拖动
* move_to_element() 鼠标悬停在一个元素上
* click_and_hold() 按下鼠标左键在一个元素上
7. 获取页面信息
* 获取当前页面的title,打印
title = driver.title()
print title
* 获取当前页面的url,打印
url = driver.current_url()
print url
* 获取控件文本信息并打印
text = driver.find_element_by_id('user_id').text()
print text
8. 操作弹出框
*接受警告信息
alert = driver.switch_to_alert()
alert.accept()
* 得到文本信息并打印
alert = driver.switch_to_alert()
print alert.text()
* 取消对话框
alert = driver.switch_to_alert()
alert.dismiss()
9. 有时候,一个网页会划分成多个frame,如果突然定位不到元素了,不妨看看要定位的元素是否不再当前所在的frame中
* 定位Frame中的元素,必须先切换到元素所在的frame中,以切换上图不同的frame为例:
切换到topFrame
self.driver.switch_to.parent_frame()
self.driver.switch_to.frame('topFrame’)
切换到mainFrame
self.driver.switch_to.parent_frame()
self.driver.switch_to.frame('mainFrame‘)
切换到leftFrame
self.driver.switch_to.parent_frame()
self.driver.switch_to.frame('lefFrame')
10. 浏览器多窗口切换
* 有时候我们在测试一个 web应用时会出现多个浏览器窗口的情况,webdriver提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的元素。
* 获得当前窗口句柄
current_window_handle()
* 返回的所有窗口的句柄到当前会话
window_handles()
* 用于处理多窗口操作的方法
switch_to_window()
* 关闭当前窗口
close()