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(‘[email protected]‘)
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()

原文地址:https://www.cnblogs.com/simple-free/p/8447358.html

时间: 2024-11-12 09:26:49

Python+Selenium笔记(七):WebDriver和WebElement的相关文章

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

Python+Selenium笔记(九):操作警告和弹出框

#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一) 前言 开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息.报警信息.执行操作后的返回信息,甚至用来接收输入值等. (二) Alert类 Selenium WebDriver 通过Alert 类来操控 JavaScript 警告. (三) Alert功能及方法 功能/属性 简单

Python+Selenium笔记(十四)鼠标与键盘事件

 (一) 前言 Webdriver高级应用的API,允许我们模拟简单到复杂的键盘和鼠标事件,如拖拽操作.快捷键组合.长按以及鼠标右键操作,都是通过使用webdriver的Python API 中的ActionChains类实现的. 调用ActionChains类方法时,不会立即执行,而是将所有操作都存放在一个队列里,当调用perform()方法时,队列里的操作会依次执行 (二) 与键盘和鼠标事件有关的一些重要的方法 方法 简单说明 click(on_element=None) 单击元素 on_e

Python+Selenium笔记(四):unittest的Test Suite(测试套件)

(一) Test Suite测试套件 一个测试套件是多个测试或测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行. 应用unittest的TestSuites特性,可以将不同的测试组成一个逻辑组,然后设置统一的测试套件,并通过一个命令来执行测试.这都是通过TestSuites.TestLoader和TestRunn类来实现的. (二) 类级别的setUp()方法和tearDown()方法 使用setUpClass()方法和tearDownClass

Python+Selenium笔记(十):元素等待机制

 (一) 前言 突然的资源受限或网络延迟,可能导致找不到目标元素,这时测试报告会显示测试失败.这时需要一种延时机制,来使脚本的运行速度与程序的响应速度相匹配,WebDriver为这种情况提供了隐式等待和显式等待两种机制. (二) 隐式等待 一旦设置隐式等待时间,就会作用于这个WebDriver实例的整个生命周期(对所有的元素查找都生效),设置隐式等待时间后,Webdriver会在一定时间内持续检测和搜寻DOM,以便于查找一个或多个不是立即加载成功并可用的元素.隐式等待的默认时间是0. WebDr

Python+Selenium笔记(十一):配置selenium Grid

(一) 前言 Selenium Grid可以将测试分布在若干个物理或虚拟机器上,从而实现分布方式或并行方式执行测试. 这个链接是官方的相关说明. https://github.com/SeleniumHQ/selenium/wiki/Grid2 (二) Selenium Grid 大概就是这个意思(一个中心节点(HUB),N个子节点(NODE,操作系统+浏览器)) (三) 环境配置 1. 前提:已经配置相应的 JDK环境(LINUX自带JDK环境(我装的LINUX自带的是1.8),WINDOWS

Python+Selenium笔记(十五)调用JS

(一) 方法 方法 简单说明 execute_async_script(script, args) 异步执行JS代码 script:被执行的JS代码 args:js代码中的任意参数 execute_script(script, args) 同步执行JS代码 script:被执行的JS代码 args:js代码中的任意参数 (二) 示例 from selenium.webdriver.common.action_chains import ActionChains from selenium imp

Python+Selenium笔记(十八):持续集成jenkins

(一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块. pip install xmlrunner (二)安装jenkins (1)   下载jekins https://jenkins.io/download/ 下载适合自己的,我是下载长期稳定版的. (2)   解压后运行jenkins.msi这个文件,然后一直下一步就是了. (3)   http://localhost:8080 登录 (4)   根据提示输入密码后,下一步. (6)   这里第一个应该是默认

python+selenium自动测试之WebDriver的常用API(基础篇一)

基于python3.6,selenium3.141,详细资料介绍查看官方API文档,点击这里 一.对浏览器操作 1 driver = webdriver.Chrome() # 初始化chrome 2 driver1 = webdriver.Firefox() # 初始化Firefox 3 driver2 = webdriver.Ie() # 初始化IE 4 driver3 = webdriver.Edge() # # 初始化Edge 5 driver.get("https://www.baidu