WEB自动化底层原理:遵循W3C协议,通过接口去完成的。
一、适合自动化测试的项目:
参考以下几点:
(1)任务测试明确,不会频繁变动
(2)每日构建后的测试验证
(3)比较频繁的回归测试
(4)软件系统界面稳定,变动少
(5)需要在多平台上运行的相同测试案例、组合遍历型的测试,以及大量的重复任务
(6)软件维护周期长
(7)项目进度压力不太大
(8)被测软件系统开发较为规范,能够保证系统的可测试性
(9)具备大量的自动化测试平台
(10)测试人员具备较强的编程能力
举例:
# 做web自动化的流程
import time
from selenium import webdriver # 导包
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 生成了一个driver的对象
driver.get("http://novel.hctestedu.com/") # 打开被测试的项目url
driver.maximize_window() # 放大浏览器窗口
el = driver.find_element(By.XPATH, '//input[@name="searchKey"]') # 通过xpath定位到了一个元素
# 通过selenium修改JS属性, 用来确定我定位的元素是什么?
driver.execute_script(
"arguments[0].setAttribute('style',arguments[1]);",
el,
"border: 2px solid green;" # 边框,green绿色
)
time.sleep(10)
二、八大元素定位介绍:
# 通过id进行元素定位搜索框
el = driver.find_element(By.ID, "searchKey")
# 通过name完成定位搜索框
el = driver.find_element(By.NAME, "searchKey")
# 通过class定位搜索框
el = driver.find_element(By.CLASS_NAME, "s_int")
# 通过tag_name定位搜索框
el = driver.find_element(By.TAG_NAME, "input")
# 通过link_text来定位搜索框
el = driver.find_element(By.LINK_TEXT, "ABCDEFG")
# 通过PARTIAL_LINK_TEXT来定位搜索框,模糊定位
el = driver.find_element(By.PARTIAL_LINK_TEXT, "ABCDEFG")
# 通过xpath来进行定位
# //div[@class='leftBox']/div/dl[@id='topBooks2']/dt/a xpath的路径
# //div[@class='leftBox'] # 找一个div属性中class的值为leftBox的元素
# //div[@class='leftBox']/div/dl
# /html/body/div[2]/div[1]/div[1] # 绝对路径,企业中,千万不要用!!!
el = driver.find_element(By.XPATH,"//div[@class='leftBox']/div/dl[@id='topBooks2']/dt/a")
# 多属性定位
# //dl[@class="hot_recommend" and @id="topBooks2"]/dt/a
# 通过属性的模糊值来进行定位
# channelWrap channelBanner cf
el = driver.find_element(By.XPATH, '//div[starts-with(@class,"cha")]')
# //*[@id="searchKey"]
# /html/body/div[1]/div[2]/div/div[1]/div/input # 绝对路径,企业中,千万不要用!!!
# 通过文本定位元素
el = driver.find_element(By.XPATH, '//a[text()="ABCDEFG"]')
# 模糊查询
el = driver.find_element(By.XPATH, "//a[starts-with(text(),'ABCDEFG')]")
# 通配符
# //*[@id="searchKey"]
el = driver.find_element(By.XPATH, '//*[@id="searchKey"]')
# CSS定位
# id
el = driver.find_element(By.CSS_SELECTOR, "input#searchKey")
# class
el = driver.find_element(By.CSS_SELECTOR, "input.s_int")
# 通过元素兄弟元素定位元素, CSS_SELECTOR
el = driver.find_element(By.CSS_SELECTOR, "div.header>div+div")
# 把定位到的元素,改为绿色
# Selenium4.X版本,新的定位方式,相对定位
# above 在上方 ,below 在下方,Left of (左边),Right of (右边)Near(附近)
el = driver.find_element(locate_with(By.TAG_NAME, "input").
above({By.XPATH: "//*[@id='txtPassword']"}))
三、元素定位校验:
谷歌浏览器F12,Ctrl+F搜索栏检查元素定位
四、元素定位验证工具xpath-helper:
快捷键Ctrl+Shift+X启动Xpath-helper,打开和关闭xpath helper的快捷键