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' ...
随机推荐
- python+request+HTMLTestRunner+unittest接口自动化测试框架
转自https://my.oschina.net/u/3041656/blog/820023 正在调研使用python进行自动化测试,在网上发现一篇比较好的博文,作者使用的是python3,但目前自己 ...
- 王某的NLP之路前言
感谢基友jayjay和海英学姐的指路,其实我的方向一直比较迷茫. 因为自己是会计学出身的,前三年也没接触编程,第一次接触还是在2016年,尝试用聚宽的量化接口,当时顺便学了python 的一点知识. ...
- web 9个令人震惊的WebGL示例
20个使用WebGL和Three.js实现的网页场景 https://www.open-open.com/news/view/9d8136 20个使用WebGL和Three.js实现的网页场景 htt ...
- 常见的SQL编写和优化
目录 常见SQL编写和优化 常见的SQL优化方式 常见SQL编写和优化 常见的SQL优化方式 对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by 涉及的列上建立索引. 应尽量 ...
- hdu 6096 String
题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6096 ( 2017 Multi-University Training Contest - Team ...
- 7.9模拟赛T1图的遍历(dfs)
图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...
- B. Tell Your World(几何数学 + 思维)
B. Tell Your World time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- JavaWeb_(Struts2框架)Ognl小案例查询帖子
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...
- sql注入的基本小知识
load_fie('') into outfile '' into dumpfile('') 堆叠注入 ;insert into liunx密码读取 /etc/passwd /etc/shadow W ...
- DB 分库分表(2):全局主键生成策略
DB 分库分表(2):全局主键生成策略 本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案.关于分库分表(sharding)的拆分策略和实施细则,请 ...