第 4 章 WebDriver API - 4.2 控制浏览器 - Selenium3 自动化测试

4.2 控制浏览器

WebDriver 主要提供操作页面上各种元素的方法,同时,它还提供了操作浏览器的一些方法,如控制浏览器窗口大小、操作浏览器前进或后退等。

4.2.1 控制浏览器窗口大小

有时候我们希望浏览器能在某种尺寸下运行。例如,可以将 Web 浏览器窗口设置成移动端大小(480x800),然后访问移动站点。WebDriver 提供的 set_window_size()方法可以用来设置浏览器窗口大小。
更多情况下,我们希望 Web 浏览器在全屏幕模式下运行,以便显示更多的元素,可以使用 maximize_window()方法实现,该方法不需要参数。

4.2.2 控制浏览器后退、前进

浏览器提供了后退和前进按钮,可以方便地在浏览过的网页之间切换,WebDriver 还提供了对应的 back()和 forward()方法来模拟后退和前进按钮。下面通过例子演示这两个方法的使用。

为了看清楚脚本的执行过程,这里每操作一步都通过 print()打印当前的 URL 地址。

4.2.3 模拟浏览器刷新

有时候需要手动刷新(按「F5」键)Web 页面,可以通过 refresh()方法实现。

4.3 WebDriver 中的常用方法

前面我们学习了定位元素的方法,但定位只是第一步,定位之后还需要对这个元素进行操作,比如,单击(按钮)或输入(输入框)。
(1)clear():清除文本。
(2)send_keys(value):模拟按键输入。
(3)click():单击元素。

(4)submit():提交表单。
例如,有些搜索框不提供搜索按钮,而是通过按键盘上的回车键完成搜索内容的提交,这时可以通过 submit()模拟。

有时候 submit()可以与 click()互换使用,但 submit()的应用范围远不及 click()广泛。click()可以单击任何可单击的元素,例如,按钮、复选框、单选框、下拉框文字链接和图片链接等。
(5)size:返回元素的尺寸。
(6)text:获取元素的文本。
(7)get_attribute(name):获得属性值。
(8)is_displayed():设置该元素是否用户可见。

运行结果如下。
执行上面的程序并查看结果:size 方法用于获取百度输入框的宽、高;text 方法用于获得百度底部的备案信息;
get_attribute()方法用于获得百度输入的 type 属性的值;is_displayed()方法用于返回一个元素是否可见,如果可见,则返回 True,否则返回 False。

4.4 鼠标操作

在 WebDriver 中,与鼠标操作相关的方法都封装在 ActionChains 类中。
ActionChains 类提供了鼠标操作的常用方法:
● perform():执行 ActionChains 类中存储的所有行为。
● context_click():右击。
● double_click():双击。
● drag_and_drop():拖动。
● move_to_element():鼠标悬停。

鼠标悬停操作
ActionChains 类提供的鼠标操作方法与 click()方法不同。
图 4-3 百度中的「设置」悬停菜单

导入 ActionChains 类。

调用 ActionChains 类,把浏览器驱动 driver 作为参数传入。

move_to_element()方法用于模拟鼠标移动到元素上,在调用时需要指定元素。

提交所有 ActionChains 类中存储的行为。

4.5 键盘操作

前面介绍过,send_keys()方法可以用来模拟键盘输入,我们还可以用它来输入键盘上的按键,甚至是组合键等。

from selenium import webdriver
# 引入Keys模块
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")

# 删除多输入的一个m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

# 输入空格键+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("教程")

# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, ‘a‘)

# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, ‘x‘)

# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, ‘v‘)

# 通过回车键来代替单击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)

driver.quit()

5_keyword_opera

上面的脚本没有什么实际意义,仅向我们展示模拟键盘各种按键与组合键的用法。

在使用键盘按键方法前需要先导入 Keys 类。

# 引入Keys模块
from selenium.webdriver.common.keys import Keys

以下为常用的键盘操作。

● send_keys(Keys.BACK_SPACE):删除键(BackSpace)
● send_keys(Keys.SPACE):空格键(Space)
● send_keys(Keys.TAB):制表键(Tab)
● send_keys(Keys.ESCAPE):回退键(Esc)
● send_keys(Keys.ENTER):回车键(Enter)

● send_keys(Keys.CONTROL,‘a‘):全选(Ctrl+a)
● send_keys(Keys.CONTROL,‘c‘):复制(Ctrl+c)
● send_keys(Keys.CONTROL,‘x‘):剪切(Ctrl+x)
● send_keys(Keys.CONTROL,‘v‘):粘贴(Ctrl+v)
● send_keys(Keys.F1):键盘 F1
……
● send_keys(Keys.F12):键盘 F12

4.6 获得验证信息

在进行 Web 自动化测试中,用得最多的几种验证信息是 title、current_url 和 text。
● title:用于获取当前页面的标题。
● current_url:用于获取当前页面的 URL。
● text:用于获取当前页面的文本信息。
下面仍以百度搜索为例,对比搜索前后的信息。

"""
*  title         获取当前页面title
*  current_url   获取当前页面URL
*  text          获得文本信息
"""
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
print(‘Before search================‘)

# 打印当前页面title
title = driver.title
print("title:"+ title)

# 打印当前页面URL
now_url = driver.current_url
print("URL:"+now_url)

driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").click()
sleep(2)

print(‘After search================‘)

# 再次打印当前页面title
title = driver.title
print("title:"+title)

# 打印当前页面URL
now_url = driver.current_url
print("URL:"+now_url)

# 获取搜索结果条数
num = driver.find_element_by_class_name(‘nums‘).text
print("result:"+num)

driver.quit()

6_assert_info

运行结果如下。

通过上面的打印信息可以看出搜索前后的差异,这些差异信息可以拿来作为自动化测试的断言点。

原文地址:https://www.cnblogs.com/MarlonKang/p/12424808.html

时间: 2024-08-29 17:04:13

第 4 章 WebDriver API - 4.2 控制浏览器 - Selenium3 自动化测试的相关文章

第 4 章 WebDriver API

从本章开始正式学习 WebDriver API,它可用来操作浏览器元素的一些类和方法. 4.1 从定位元素开始 例如百度的首页,页面上有输入框.按钮.文字链接.图片等元素.自动化测试要做的就是模拟鼠标和键盘来操作这些元素,如单击.输入.鼠标悬停等.而操作这些元素的前提是要定位它们.自动化工具,如何定位这些元素呢?通过浏览器自带的(F12)开发者工具可以看到,页面元素都是由 HTML 代码组成的,它们之间有层级地组织起来,每个元素有不同的标签名和属性值.WebDriver 就是根据这些信息来定位元

第 4 章 WebDriver API - 4.9 多表单切换 - 4.14 下载文件

4.9 多表单切换 在 Web 应用中经常会遇到 frame/iframe 表单嵌套页面的应用,WebDriver 只能在一个页面上对元素进行识别和定位,无法直接定位 frame/iframe 表单内嵌页面上的元素,这时就需要通过 switch_to.frame()方法将当前定位的主体切换为 frame/iframe 表单的内嵌页面.这里以 126 邮箱登录为例,登录框结构如下. 通过 switch_to.frame()方法切换表单. """ * switch_to.fram

selenium之WebDriver API

自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告,元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操作元素10%,获取返回结果10%:断言10%.如果一个页面上的元素不能被定位到,那后面的操作就无法继续了.而WebDriver 属于Selenium体系设计出来操作浏览器的一套API,它支持多种语言,Selenium WebDriver只是python的一个第三方框架,也就是说是一个实现web自动化的第

(四)WebDriver API:控制浏览器及鼠标、键盘事件

参考文档:WebDriver官方文档,下载链接:http://download.csdn.net/detail/kwgkwg001/4004500 虫师:<selenium2自动化测试实战-基于python语言> 一.控制浏览器 webdriver主要提供操作页面上各种元素的方法,但它也提供操作浏览器的一些方法,例如控制浏览器大小.前进和后退等. 1.控制浏览器窗口大小 webdriver提供了set_window_size()方法来设置浏览器大小: # 控制浏览器大小 from seleni

Selenium2+Python:Webdriver API速记手册

由于web自动化常常需要控制浏览器行为和操作页面元素,相关函数又比较多,于是再此记下一份Webdriver API查阅文档以备不时之需. 参考:虫师<Selenium2自动化测试实战>,和http://selenium-python.readthedocs.io/api.html 1 #coding=utf-8 2 from selenium import webdriver 3 driver=webdriver.Firefox() 4 driver.get('http://www.baidu

Lua_第23章 C API 纵览

第23章 C  API 纵览 Lua是一个嵌入式的语言,意味着 Lua 不仅可以是一个独立运行的程序包也可以是一个用来嵌入其他应用的程序库.你可能觉得奇怪:如果 Lua 不只是独立的程序,为什么到目前为止贯穿整本书我们都是在使用 Lua 独立程序呢? 这个问题的答案在于 Lua 解释器(可执行的 lua).Lua解释器是一个使用 Lua 标准库实现的独立的解释器,它是一 个很小的应用(总共不超过500 行的代码).解释器负责程序和使用者的接口:从使用者那里获取文件或者字符串,并传给 Lua 标准

java JDK8 学习笔记——第15章 通用API

第十五章 通用API 15.1 日志 15.1.1 日志API简介 1.java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件,就可在标准Java平台使用是其好处.使用日志的起点是Logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必修使用Logger的静态方法getLogger(). 2.调用getLogger()时,必须指定Logger实例所属名称空间,名称

webdriver API中文文档

1.1   下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方UserGuide:http://seleniumhq.org/docs/ 1.2   用webdriver打开一个浏览器 我们常用的浏览器有firefox和IE两种,firefox是selenium支持得比较成熟的浏览器.但是做页面的测试,速度通常很慢,严重影 响持续集成的速度,这个时候建议使用HtmlUnit,不过HtmlUnitDirver

虫师Selenium2+Python_4、webdriver API

大纲 P70——WebDriver API P83——控制浏览器 P86——简单元素操作 P92——键盘事件和获得验证信息(预期结果) P95——设置元素等待:显示等待和隐式等待 P100——定位一组元素 P104——多表单切换 P106——多窗口切换 P108——警告框处理 P110——上传文件 P116——下载文件 P117——操作cookie P120——调用JavaScript P123——处理HTML5的视频播放 P124——窗口截图 P125——关闭窗口和验证码处理 P128——We