selenium
搭建selenuim测试环境
安装webdriver_helper
pip install webdriver_helper 版本为2.0以上的收费版会存在使用不成功的情况,请下载版本为2.0以下的
进行自动化测试实践
- 获取webdriver
- 加载网页
- 获取元素
- 操作元素
- 断言
具体代码如下:学习B站软件测试尚学院官方
import time
from selenium.webdriver.common.by import By
from webdriver_helper import get_webdriver
# 获取webdriver(使用with关键字自动关闭webdriver)
with get_webdriver() as driver:
# 加载网页
driver.get("http://101.34.221.219:8010/")
# 浏览器最大化
driver.maximize_window()
# 进行登录操作
driver.find_element(By.LINK_TEXT, "登录").click()
driver.find_element(By.XPATH, '//input[@placeholder="请输入用户名/手机/邮箱"]', ).send_keys("tiankai")
driver.find_element(By.XPATH, '//input[@placeholder="请输入登录密码"]', ).send_keys("123123")
driver.find_element(By.XPATH, '//button[text()="登录"]').click()
# 等待网页跳转
time.sleep(0.5)
# 获取登陆操作后服务器返回的消息
msg = driver.find_element(By.XPATH, '//p[@class="prompt-msg"]').text
# 进行断言
assert msg == "登录成功"
# 跳转到首页
time.sleep(3)
driver.get("http://101.34.221.219:8010/")
# 进行订单操作
driver.find_element(By.XPATH, '//a[starts-with(text(), "vivo")]').click()
time.sleep(0.5)
# 转换网页到最近打开的网页
driver.switch_to.window(driver.window_handles[-1])
# 打印当前的浏览器网页的URL
# print(driver.current_url)
time.sleep(0.5)
driver.find_element(By.ID, "text_box").send_keys("2")
driver.find_element(By.XPATH, '//button[@title="点此按钮到下一步确认购买信息"]').click()
# 等待页面跳转
time.sleep(1)
# 处理弹出,点击确定
driver.switch_to.alert.accept()
driver.find_element(By.XPATH, '//span[text()="货到付款"]').click()
time.sleep(1)
# 处理弹出,点击确定
driver.switch_to.alert.accept()
driver.find_element(By.XPATH, '//button[@title="点击此按钮,提交订单"]').click()
time.sleep(0.5)
msg = driver.find_element(By.XPATH, '//p[@class="prompt-msg"]').text
assert msg == "操作成功"
暴露出问题:
1.大量重复代码
2.sleep等待,不够优雅
3.每次执行用例需要重新登录
解决方法:使用pytest
selenium中获取元素的八个方法(按照定位方法,分为三组)
- 定位a标签:LINK_TEXT PARTIAL_LINK_TEXT
- 使用属性定位:ID NAME CLASS_NAME TAG_NAME
- 通用定位:CSS_SELECTOR XPATH
XPATH的基本语法
- 选择元素
XPath使用路径表达式来选择元素。路径表达式从根节点开始,使用斜杠(/)分隔不同的元素来指定元素的位置。例如,以下路径表达式将选择窗口下的body下的所有input元素:
/window/body/input
- 选择属性
XPath也可以用于选择元素的属性。在元素名称后面加上@符号,然后指定属性名称即可选择属性。例如,以下路径表达式将选择所有book元素的category属性:
/window/body/input/@category
- 选择文本
XPath可以选择元素的文本内容。使用text()函数来选择元素的文本。例如,以下路径表达式将选择第一个input元素的文本内容:
/window/body/input[1]/text()
- 使用通配符
XPath支持通配符*,它可以匹配任何元素。例如,以下路径表达式将选择所有元素:
//*
pytest
pytest的环境搭建
安装pytest
pip install pytest