赞
踩
DAY1
01PART什么是 web ui 自动化
自动化测试是指通过自动化测试工具或其他手段,按照测试人员的测试计划进行自动测试,目的是减轻手工测试的工作量。
简单来说就是用代码模仿手工操作
1
集中注意点
测试自动化并不是为了赢得老板的赞赏,或者认为这是一个很潮的技术,不用就会落后,而是为了发现问题,提高产品的质量。
UI自动化测试应该集中在:
1)UI的文本,图片显示正确性
2)UI的交互逻辑正确性测试
3)UI上的用户行为正确性测试
2
难点
对比手工UI测试,UI自动化测试有如下的难点:
1)从UI测试的角度来说,一个非“预期”产生的缺陷很难被自动化测试发现,而手工测试则能轻松的发现这个缺陷;
2)UI本身的变化性,要想达到和手工测试相同的覆盖率,单纯的UI自动化测试往往很难证明自己的投资回报;
3)UI控件元素本身识别的复杂性;
4)UI自动化测试出现问题时,恢复到下一条测试case执行的场景是复杂的。因为出现这种问题的意外,是非“预期”的;
5)UI的测试case,有很多是关于用户交互方面的,而这方面也其一定的复杂性;
3
什么时候需要进行 ui 自动化测试
从本质上讲,非UI测试和UI测试,是互为补充的,根据其成本和特性的不同,在实际工程应用中也应该领会运用。其基本原则:非UI自动化测试用例为主,UI自动测试为必要的补充,考虑成本因素,UI自动测试可以被手动测试所取代
1)基本用户场景测试和验收确认(acceptance)测试用例
2)逻辑与用户界面绑定在的一起,无法绕过UI直接测试核心逻辑模块。
02PARTselenium 与 webdriver
Selenium 是一个用于 Web 测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器
这个工具的主要功能包括:
1)测试与浏览器的兼容性 ,应用程序是否能够很好地工作在不同浏览器和操作系统之上
2)测试系统功能,创建回归测试检验软件功能和用户需求
WebDriver 就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的Selenium WebDriver API。
使用这套API可以操控浏览器的开启、关闭,打开网页,操作界面元素,控制Cookie,还可以操作浏览器截屏、安装插件、设置代理、配置证书等
03PARTHTML 扫盲运动
HTML 元素语法
HTML 元素以开始标签起始
HTML 元素以结束标签终止
元素的内容是开始标签与结束标签之间的内容
某些 HTML 元素具有空内容(empty content)
比如这个,换行标签
空元素在开始标签中进行关闭(以开始标签的结束而结束)
大多数 HTML 元素可拥有属性
HTML 文档由嵌套的 HTML 元素构成
HTML 属性
HTML 元素可以设置属性
属性可以在元素中添加附加信息
属性一般描述于开始标签
属性总是以名称/值对的形式出现,比如:name=“value”
HTML 标准属性参考手册:https://www.runoob.com/tags/ref-standardattributes.html
04PART 环境搭建
1、为 Python 安装 selenium模块,pip install selenium
2、下载对应浏览器驱动
Chromedriver
http://npm.taobao.org/mirrors/chromedriver/
版本对照表:https://blog.csdn.net/BinGISer/article/details/88559532
Firefoxdriver
https://github.com/mozilla/geckodriver/releases
版本对照表:https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
05PART使用 selenium 访问百度并搜索
反爬虫设置
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option(‘excludeSwitches’, [‘enable-automation’])
driver = webdriver.Chrome(
executable_path="/Users/nathaniel/MyApp/lib/seleniumLib/chromedriver",
options=options)
driver.get("https://www.baidu.com")
driver.quit()
06PARTui 自动化操作流程
选择界面元素
根据元素的特征:ID,Name,Class,Tag,等
根据元素特征和关系:css,xpath
操作界面元素
输入操作:点击、输入文字、拖拽等
输出操作:获取元素的各种属性
根据界面上获取的数据进行分析和处理
07PART元素定位大法
find_element_by_id:通过ID进行匹配查找,只返回匹配到的一个元素
find_element_by_name:通过name进行匹配查找,只返回匹配到的一个元素
find_element_by_xpath:通过xpath进行匹配查找,只返回匹配到的一个元素
find_element_by_link_text:通过链接内容进行匹配查找,只返回匹配到的一个元素
find_element_by_partical_link_text:通过部分链接内容进行匹配查找,只返回匹配到的一个元素
find_element_by_tag_name:通过标签名称进行匹配查找,只返回匹配到的一个元素
find_element_by_class_name:通过class名称进行匹配查找,只返回匹配到的一个元素
find_element_by_css_selector:通过CSS选择器进行匹配查找,只返回匹配到的一个元素
值得注意的是,上面方法只会匹配查找只会获取第一个元素。除了上面这些查找单个元素的方法之外,Selenium还定义查找多个元素的方法:
find_elements_by_name:通过name进行匹配查找,返回所有匹配到的元素列表
find_elements_by_xpath:通过xpath进行匹配查找,返回所有匹配到的元素列表
find_elements_by_link_text:通过链接内容进行匹配查找,返回所有匹配到的元素列表
find_elements_by_partical_link_text:通过部分链接内容进行匹配查找,返回所有匹配到的元素列表
find_elements_by_tag_name:通过标签名称进行匹配查找,返回所有匹配到的元素列表
find_elements_by_class_name:通过class名称进行匹配查找,返回所有匹配到的元素列表
find_elements_by_css_selector:通过CSS选择器进行匹配查找,返回所有匹配到的元素列表
from selenium import webdriver
import time
driver = webdriver.Chrome(“D:\tool\selenium\chromedriver.exe”)
driver.get(“D:\test\script\study\seleniumStu\day1\test.html”)
“”"
textElement = driver.find_element_by_css_selector(“body > div > p:nth-child(1)”)
print(textElement.text)
“”"
“”"
textElement = driver.find_element_by_xpath("[表情]ml/body/div/p[2]")
print(textElement.text)
“”"
“”"
inputElement = driver.find_element_by_id(“58680504-89fc-42d4-ab86-afc9456f880e”)
inputElement.send_keys(“荀尘”)
“”"
“”"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。