(一) WebDriver
WebDriver提供许多用来与浏览器交互的功能和设置,通过WebDriver的功能和一些方法,来实现与浏览器窗口、警告、框架和弹出窗口的交互,它也提供了自动化操作浏览器导航栏、设置cookies、截屏等方便我们测试的特性。
(二) WebDriver功能及方法
| 功能/属性 | 简单说明 | 
| current_url | 获取当前页面的URL地址(driver.current_url) 下面的都是以这种方式,driver指浏览器驱动实例。 | 
| window_handle | 获取当前窗口的句柄 | 
| name | 获取该实例底层的浏览器名称 | 
| orientation | 获取当前设备的方位 | 
| page_source | 获取当前页面源代码 | 
| title | 获取当前页面的标题 | 
| window_handles | 获取当前会话里所有窗口的句柄 | 
| 方法 | 简单说明 | 
| close() | 关闭当前浏览器窗口 | 
| back() | 后退一步 | 
| forward() | 前进一步 | 
| get(url) | 访问URL并加载网页到当前的浏览器会话 | 
| maximize_window() | 最大化浏览器窗口 | 
| quit() | 退出当前的驱动实例并关闭所有相关窗口 | 
| refresh() | 刷新当前页面 | 
| implicitly_wait() | 等待时间,单位为秒 | 
| set_page_load_timeout() | 设置一个页面完全加载完成的超时等待时间,单位为秒 | 
| set_script_timeout() | 设置脚本执行的超时时间 | 
(三) WebElement功能及方法
通过WebElement可以实现与网站页面元素的交互,包括文本框、文本域、按钮、单选框、多选框、表格、行、列和div等。
| 功能/属性 | 简单说明 | 
| size | 获取元素大小(例如element.size) 下面都是以这种方式,element指定位的某个元素 | 
| tag_name | 获取标签的名称 | 
| text | 获取元素的文本值 | 
| 方法 | 简单说明 | 
| clear() | 清除文本框或文本域的内容 | 
| click() | 点击元素 | 
| get_attribute(name) | 获取元素的属性值,name:要获取的属性名称 | 
| is_displayed() | 检查元素对于用户是否可见 | 
| is_enabled() | 检查元素是否可用 | 
| is_selected() | 检查元素是否被选中,主要用于单选框和复选框 | 
| send_keys(value) | 输入文本,value是要输入的值 | 
| submit() | 提交表单。如果对元素使用,将会提交该元素所属的表单 | 
| value_of_css_property(property_name) | 获取CSS属性的值, property_name是CSS属性的名称 | 
(四) 操作表单、文本框、复选框、单选按钮
通过WebElement实现与各种HTML控件的自动化交互,例如在一个文本框输入文本、单击按钮、选择单选框或者复选框、获取元素的文本及属性值等。
例如,博客园注册功能的自动化:
(这里只是举个例子哈,直接复制是没用的,下面的代码只定位部分字段(邮箱、登录名和注册按钮),而且没有处理验证码,验证码部分以后再研究怎么处理)
1 def test_register_new_user(self): 2 3 #定位并点击博客园首页的 注册 4 5 login_area = self.driver.find_element_by_css_selector(‘#login_area‘) 6 7 register = login_area.find_element_by_link_text(‘注册‘) 8 9 register.click() 10 11 #检查打开的网页标题是不是‘用户注册 - 博客园‘ 12 13 self.assertTrue(‘用户注册 - 博客园‘ == self.driver.title) 14 15 # 定位注册页面各个字段及注册按钮 16 17 user_email = self.driver.find_element_by_id(‘Email‘) 18 19 user_login_name = self.driver.find_element_by_id(‘LoginName‘) 20 21 register_btn = self.driver.find_element_by_id(‘submitBtn‘) 22 23 # 检查字段允许的最大输入字符与最小输入字符是否与预期一致 24 25 self.assertEqual(‘2‘, user_login_name.get_attribute(‘data-val-length-min‘)) 26 27 self.assertEqual(‘30‘, user_login_name.get_attribute(‘data-val-length-max‘)) 28 29 # 检查各个字段及按钮对用户是否可见及可用 30 31 self.assertTrue(user_email.is_displayed() and user_email.is_enabled()) 32 33 # 输入用户信息 34 35 user_email.send_keys(‘test@163.com‘) 36 37 user_login_name.send_keys(‘test‘) 38 39 # 点击注册按钮 40 41 register_btn.click() 42 43 # 检查是否显示注册成功的提示 44 45 self.assertTrue(self.driver.find_element_by_css_selector(‘p.txt-title.success-color‘).text == ‘注册成功‘)
例如,可以使用下面的方式检查博客园登录页面的复选框是否被选中
1 def test_login(self): 2 3 …省略打开登录页面的代码(这段就不注释了#) 4 5 automatic_login = self.driver.find_element_by_id(‘remember_me‘) 6 7 #检查登录页面复选框,是否默认不被选中 8 9 self.assertFalse(automatic_login.is_selected()) 10 11 #点击选中复选框 12 13 automatic_login.click()
