Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)
前置步骤:
安装selenium,chrome驱动,Python3.6
学习目的:
常见API的使用
涉及的API:
step1: 访问一个网址
step2: 网页的前进和后退
step3: 刷新当前页面
step4: 浏览器窗口最大化
step5: 获取并设置当前窗口的位置
step6: 获取并设置当前窗口的大小
step7: 获取页面的title属性值
step8: 获取页面HTML源代码
step9: 获取当前页面的URL
step10: 获取与切换浏览器窗口句柄
step11:获取页面元素的基本信息
step12: 获取页面元素的文本内容
step13: 判断页面元素是否可见
step14: 判断页面元素是否可操作
step15: 获取页面元素的属性
step16: 获取页面的CSS属性值
step17: 情况输入框中的内容
step18: 在输入框中输入指定的内容
step19: 单击按钮
step20: 双击某个元素
step21: 操作单选下拉列表
step22: 断言单选列表选项值
step23: 操作多选的选择列表
step24: 操作可以输入的下拉列表
正式步骤:
测试使用的unittest框架代码如下:
# -*- coding:utf-8 -*-
from selenium import webdriver
import unittest class WebdriverAPI(unittest.TestCase):
def setUp(self):
# 每个用例都执行,在单个用例运行前执行
#打开浏览器
self.driver = webdriver.Chrome() def tearDown(self):
#每个用例都执行,在单个用例运行后执行
#退出浏览器
self.driver.quit() def test_visitURL(self):
#测试步骤
pass if __name__ == '__main__':
unittest.main()
step1: 访问一个网址
def test_visitURL(self):
url = 'https://www.baidu.com/'
self.driver.get(url)
assert self.driver.title == '百度一下,你就知道'
print(self.driver.title)
step2: 网页的前进和后退
def test_visitHistoryPage(self):
firstUrl = 'https://www.baidu.com/'
secondUrl = 'https://cn.bing.com/'
#访问第一个网址
self.driver.get(firstUrl)
time.sleep(2)
#访问第二个网址
self.driver.get(secondUrl)
time.sleep(2)
#回到百度网址
self.driver.back()
time.sleep(2)
#再回到bing
self.driver.forward()
time.sleep(2)
step3: 刷新当前页面
self.driver.refresh()
step4: 浏览器窗口最大化
#窗口最大化
self.driver.maximize_window()
step5: 获取并设置当前窗口的位置
#获取浏览器位置
position = self.driver.get_window_position()
#打印出浏览器的坐标
print('当前窗口x轴%s,y轴%s'%(position['x'],position['y']))
#设置浏览器的位置
self.driver.set_window_position(x = 100,y = 100)
time.sleep(2)
step6: 获取并设置当前窗口的大小
#获取浏览器窗口大小
window_size = self.driver.get_window_size()
print('current size %s :'%window_size)
print('宽%s,高%s'%(window_size['width'],window_size['height']))
#重新设置窗口大小
self.driver.set_window_size(width=1000,height=1000)
step7: 获取页面的title属性值
#获取并打印页面title
page_title = self.driver.title
print(page_title)
#断言页面title内容
self.assertEqual(page_title,'百度一下,你就知道1','页面属性值错误')
step8: 获取页面HTML源代码
#获取页面的HTML源代码
page_source = self.driver.page_source
print(page_source)
#断言源码是否包含关键字百度,显然会有回显信息打印出来,正确则没有回显msg
self.assertTrue('百度#'in page_source,'不包含')
step9: 获取当前页面的URL
#获取当前页面url
self.driver.get(firstUrl)
correntPageUrl = self.driver.current_url
print(correntPageUrl)
step10: 获取与切换浏览器窗口句柄
#获取与切换浏览器窗口句柄
self.driver.get(firstUrl)
#获取当前窗口的句柄
firstHander = self.driver.current_window_handle
#打印获取的第一个窗口句柄
print(firstHander)
#输入框输入检索内容:selenium
self.driver.find_element_by_id('kw').send_keys('selenium3')
#单击搜索按钮
self.driver.find_element_by_id('su').click()
#设置等待时间3s
time.sleep(3)
#单击需要点击的网页链接
self.driver.find_element_by_partial_link_text('Python+Selenium3最新配置 - CSDN博客').click()
time.sleep(3)
#获取所有的句柄
allHander = self.driver.window_handles
print('当前窗口句柄:'+ allHander[-1])
#获取所有窗口句柄
for hander in allHander:
print(hander)
#将操作句柄切换到当前窗口
self.driver.switch_to.window(allHander[-1])
time.sleep(3)
#可以关闭当前窗口,不然关闭的是firstUrl
self.driver.close()
time.sleep(3)
print(firstHander)
self.driver.switch_to.window(firstHander)
self.driver.find_element_by_id('kw').clear()
time.sleep(2)
step11:获取页面元素的基本信息
firstUrl = 'https://www.baidu.com/'
self.driver.get(firstUrl)
testElement = self.driver.find_element_by_xpath("//a[text()='新闻']")
print(testElement.tag_name,testElement.size)
step12: 获取页面元素的文本内容
testElementText = self.driver.find_element_by_xpath("//a[text()='新闻']")
print(testElementText.text)
step13: 判断页面元素是否可见
testElementVisiable = self.driver.find_element_by_xpath("//a[text()='新闻']")
print(testElementVisiable.is_displayed())
step14: 判断页面元素是否可操作,是否已选
testElementVisiable = self.driver.find_element_by_xpath("//a[text()='新闻']")
print(testElementVisiable.is_displayed())
#判断页面元素是否可操作
print(testElementVisiable.is_enabled())
step15: 获取页面元素的属性
#获取页面元素属性
attribution = testElementVisiable.get_attribute('class')
print(attribution)
attribution1 = testElementVisiable.get_attribute('name')
print(attribution1)
attribution2 = testElementVisiable.get_attribute('text')
print(attribution2)
step16: 获取页面的CSS属性值
css_property = self.driver.find_element_by_xpath("//a[text()='新闻']")
print(css_property.value_of_css_property('height'))
print(css_property.value_of_css_property('width'))
print(css_property.value_of_css_property('font-size'))
step17: 清空输入框中的内容
self.driver.find_element_by_id('kw').send_keys('test')
self.driver.find_element_by_id('kw').clear()
step18: 在输入框中输入指定的内容
self.driver.find_element_by_id('kw').send_keys('test')
step19: 单击按钮
self.driver.find_element_by_partial_link_text('Python+Selenium3最新配置 - CSDN博客').click()
step20: 双击某个元素
input = self.driver.find_element_by_id('kw')
input.send_keys('双击全选,背景高亮')
from selenium.webdriver import ActionChains
action_chains = ActionChains(self.driver)
#双击后,高亮两个字背景高亮,只是为了证明双击起效了
action_chains.double_click(input).perform()
time.sleep(3)
step21: 操作单选下拉列表
测试用下拉html页面代码
<html>
<body>
<form>
<select name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
</form>
</body>
</html>
测试脚本:
#操作简单的下拉列表
url = 'F:\\python_stack\\python_autotest\\webdriver_api\\xiala.html'
self.driver.get(url)
all_options = self.driver.find_elements_by_tag_name('option')
for option in all_options:
print(option.text)
print(option.get_attribute('value'))
option.click()
time.sleep(1)
step22: 断言单选列表选项值
url = 'F:\\python_stack\\python_autotest\\webdriver_api\\xiala.html'
self.driver.get(url)
from selenium.webdriver.support.ui import Select
select_element = Select(self.driver.find_element_by_name('cars'))
current_options = select_element.options
current_optionsList = []
#遍历options,并生成option文本值的列表
for option in current_options:
print(option.text)
current_optionsList.append(option.text) print(current_optionsList)
expect_optionsList = ['Volvo','Saab','Fiat','Audi']
#断言两个列表是否相同
self.assertListEqual(current_optionsList,expect_optionsList)
step23: 操作多选的选择列表
url = 'F:\\python_stack\\python_autotest\\webdriver_api\\xiala.html'
self.driver.get(url)
from selenium.webdriver.support.ui import Select
select_element = Select(self.driver.find_element_by_name('cars'))
select_element.select_by_index(0)
select_element.select_by_visible_text('Fiat')
select_element.select_by_value('audi')
time.sleep(3)
#取消选中的单位
select_element.deselect_all()
time.sleep(3)
step24: 操作可以输入的下拉列表
测试用HTML代码
<!DOCTYPE html>
<html>
<body>
<div style="position: relative;">
<input list="pasta" id = "select">
<datalist id ="pasta">
<option>C</option>
<option>Java</option>
<option>Python</option>
<option>C#</option>
<option>Ruby</option>
</datalist>
</div>
</body>
</html>
测试脚本:
#带输入的下拉列表操作
url = 'F:\\python_stack\\python_autotest\\webdriver_api\\data.html'
self.driver.get(url)
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
self.driver.find_element_by_id("select").clear()
time.sleep(1)
#输入的同时向下按箭头
self.driver.find_element_by_id("select").send_keys("Java",Keys.ARROW_DOWN)
time.sleep(2)
self.driver.find_element_by_id("select").send_keys(Keys.ENTER)
time.sleep(2)
难点分析:
API看似简单,实际的简单应用中,还是花了很多时间去实际运行,眼高手低不好
学习总结:
还有24个常用API,下班后继续
参考资料:
参考英文官方资料:http://selenium-python.readthedocs.io/locating-elements.html
Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)的更多相关文章
- Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项
学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...
- Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条
学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>
前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...
- Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素
学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...
- Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装
学习目的: 掌握显示等待 掌握二次封装 正式步骤: step1:显示等待的代码示例 # -*- coding:utf-8 -*- from selenium import webdriver from ...
- Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法
学习目的: xpath定位是针对常规定位方法中,最有效的定位方式. 场景: 页面元素的定位. 正式步骤: step1:常规属性 示例UI 示例UI相关HTML代码 相关代码示例: #通过id定位 dr ...
- Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest
前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...
- Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...
- Python3 Selenium自动化web测试 ==>FAQ:Unittest测试报告生成文件名加测试完成时间字符串
测试代码,虽然有点笨重,以后再修改: if __name__ == '__main__': report = os.path.join('D:/Python36/report/report.html' ...
随机推荐
- C#:调用存储过程方法
MySqlParameter p1 = new MySqlParameter("id", MySqlDbType.Int32); p1.Value = sid; MySqlPara ...
- java 枚举类(简单使用)
直接上代码 用法一(常量): package com.ou.test; import com.sun.corba.se.impl.util.SUNVMCID; public class Enum { ...
- 1 request模块
官方文档真是好用的一匹 官方文档:https://2.python-requests.org//zh_CN/latest/index.html 参考blog:https://www.cnblogs.c ...
- Redis和Memcache区别
1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memcache还可用于缓存其他东西,例如图片.视频等等. 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供li ...
- (转载)了解Android 4.1,之三:黄油项目 —— 运作机理及新鲜玩意
Welcome back to GTKA, everyone's favorite investigative series where we learn all about the newest v ...
- 伪元素::before和::after的详细介绍
㈠什么是伪元素? 不同的解释: ⑴伪元素是创造关于文档语言能够指定的文档树之外的抽象.例如文档语言不能提供访问元素内容第一字或者第一行的机制.伪元素允许设计师引用它们,否则这是难以办到的.伪元素还提供 ...
- 【Python之路】特别篇--Git & GitHub
版本控制工具主要实现2个功能: 版本管理 在开发中,这是刚需,必须允许可以很容易对产品的版本进行任意回滚,版本控制工具实现这个功能的原理简单来讲,就是你每修改一次代码,它就帮你做一次快照 协作开发 一 ...
- Asteroids POJ - 3041
Asteroids POJ - 3041 题目大意:N*N的地图里,存在一些小行星,Bessie有个很牛x但又很耗蓝的武器,一次可以消灭一行或者一列的所有小行星,问最少使用多少次这个武器可以消灭所有的 ...
- BOM基础笔记
BOM基础 BOM对浏览器的一些操作 1.打开.关闭窗口 •open –蓝色理想运行代码功能 window.open('http://www.baidu.com/', '_self'); <!d ...
- XOR Guessing
E. XOR Guessing 第一次做这种交互题,刚开始还看不懂,现在已经差不多可以理解了,清空缓存区用cout<<endl;即可,需要注意的是,如果用fflush(stdout)来 ...