Python+Selenium笔记(七):WebDriver和WebElement

(一)  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()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cnblogs

关于HTML面试题汇总之H5

一、H5有哪些新特性,移除了哪些元素?如何处理h5新标签的浏览器兼容性问题,如何区分html和html5 1. html5不在是SGL(通用标记语言)的一个子集...

2985
来自专栏前端小叙

input框取消光标颜色手机端不生效

<style> input{ color:transparent; } </style> <input value="我要隐藏光标"> //文字颜色可以...

4446
来自专栏微信小开发

微信小程序开发-常见问题

知晓程序员,专注微信小程序开发的程序员! 好久没写文章,今天总结一下小程序开发过程中遇到的问题,有不对的地方,欢迎各位指正~ 1、域名必须是HTTPS2、inp...

2609
来自专栏微信小程序开发

微信小程序开发-常见问题

知晓程序员,专注微信小程序开发的程序员! 好久没写文章,今天总结一下小程序开发过程中遇到的问题,有不对的地方,欢迎各位指正~ 1、域名必须是HTTPS 非HT...

5319
来自专栏Youngxj

hislider自适应幻灯片焦点图-emlog插件

1654
来自专栏十月梦想

响应式媒体查询media的用法

        media媒体查询响应式可以实现什么效果?对于不同尺寸的设备相应不同的样式,但是不能兼容移动和pc端的全响应兼容.

1172
来自专栏lestat's blog

一些常用正则表达式

最近用phpspider抓取网页,除了用xpath匹配标签外,偶尔也会用到正则表达式, 这里简单记录一下常用的正则如下: $str=preg_replace("...

2844
来自专栏听雨堂

动态加载控件

参考文章:http://blog.csdn.net/yicko/archive/2005/04/16/349740.aspx 1、加载的是普通的控件,不是用户控...

2167
来自专栏无原型不设计

【Mockplus教程】复制/粘贴/克隆

1. 复制和粘贴 选中组件后,鼠标右击,在弹出菜单中选择“复制”,然后在需要粘贴的位置鼠标右击,菜单中选择“粘贴”即可。 也可以选中组件后使用快捷键Ctr...

3207
来自专栏Python小屋

Python爬虫基础:常用HTML标签和Javascript入门

大部分HTML标签是闭合的,由开始标签和结束标签构成,二者之间是要显示的内容,例如:<title>网页标题</title>。也有的HTML标签是没有结束标签的,...

1451

扫码关注云+社区

领取腾讯云代金券