web自动化01-自动化解决的问题-环境搭建-元素定位
自动化测试
-
概念:由程序代码代替人工完成验证系统功能的过程
-
解决的问题:
-
回归测试
-
压力测试
-
兼容性测试
-
提高测试效率,提升产品质量
-
-
自动化测试分类
-
-
移动自动化测试
-
接口自动化测试
-
单元测试
-
-
-
需求变动不频繁
-
项目周期要长(通常半年以上)
-
项目需要回归测试
-
环境搭建:
-
python环境
-
selenium包安装
-
在线安装:
-
pip install selenium 默认下载的最新版本
-
pip install selenium==“版本号”
-
-
查看selenium信息
-
pip show selenium
-
pip list 查看python第三方包信息
-
-
卸载
-
pip uninstall selenium
-
-
离线安装步骤
-
下载外部包
-
拷贝解压好的离线包到.\python\Lib\site-packages
-
打开cmd,进入.\python\Lib\site-packages目录
-
执行python setup.py instal
-
-
-
安装浏览器
-
安装浏览器驱动
-
谷歌驱动:https://chromedriver.storage.googleapis.com/index.html?path=76.0.3809.12/
-
下载驱动包
-
将驱动文件拷贝到python安装(查看python安装目录where python)
-
入门案例
#1.导包 import time from selenium import webdriver #2.实例化浏览器驱动对象 driver = webdriver.Chrome() # driver =webdriver.Firefox() #3.打开测试网址 driver.get('测试地址') #4.业务操作 time.sleep(3) #5.关闭浏览器 driver.quit()
八大元素定位
By.id driver.find_element_by_id(id属性值)
By.name driver.find_element_by_name(name)
By.class_name driver.find_element_by_class_name(class其中一个属性值)
By.tag_name driver.find_element_by_tag_name("")
超链接定位
driver.find_element_by_link_text(元素完整文本信息)
driver.find_element_by_partial_link_text(元素局部文本信息)
Xpath定位 driver.find_element_by_xpath(xpath的表达式)
//*[@属性名='属性值']
拓展:
重点需要掌握的方法://*[text()="xxx"] 文本内容是xxx的元素
定位到部分文本:断言用 find_element_by_xpath('//button/span[contains(text(), "指定文本内容")]').click()
"""
注意:xxx这个参数是元素的全部文本信息
"""
//*[contains(@attribute,'xxx')] 属性中含有xxx的元素
//*[starts-with(@attribute,'xxx')] 属性以xxx开头的元素
CSS定位策略
#id选择 表达式:#id属性值
#class选择器 表达式:.class其中一个属性值 #元素选择器 表达式:标签名 #属性选择器 表达式:[属性名='属性值'] 标签名[属性名='属性值'] #标签名[属性名='属性值'][属性名1='属性值1'] #注意的:多个属性连接的时候中括号中间没有空格 #层级选择 #格式1:element1>element2 通过element1来定位element2,并且#element2必须为element1的直接子 "#pa>input[name='userA']" #格式2:element1 element2 通过element1来定位element2,并且#element2为element1的后代元素 "fieldset input[name='userA']"
# 拓展
input[type^='p'] type属性以p字母开头的元素
input[type$='d'] type属性以d字母结束的元素
input[type*='w'] type属性包含w字母的元素
常见元素操作
#鼠标右键点击事件 element.click() #模拟输入:value表示输入的字符串信息 element.send_keys(value) #清除信息 element.clear()
#窗口最大化(重点) driver.maximize_window() #设置窗口大小 driver.set_window_size(width,height) #设置窗口位置 driver.set_window_position(x,y) #关闭当前驱动页面 driver.close() #关闭整个浏览器 driver.quit() #获取当前页面标题 driver.title #获取当前页面地址 driver.current_url
获取信息 | 方法 | 备注 |
---|---|---|
获取元素文本信息 | element.text | |
获取元素大小 | element.size | |
获取元素属性信息 | element.get_attribute('元素属性值') | |
判断元素是否可见 | element.is_displayed() | span标签,权限 |
判断元素是否可用 | element.is_enabled() | 例:购物车减少数量按钮 |
判断元素是否选中 | element.is_selected() | 例:注册协议是否选中 |