断言assert
- 断言一定是选择有指定意义的内容来进行断言
- 断言的形式:
- 一般常用的断言就是通过text来进行
- 除此之外,如果需要流程继续执行,可以考虑用显式等待。
- 目的:用于校验自动化执行是否正确(达到预期结果)
- 添加断言的节点:
- 在流程结束的时候
- 或者是在关键节点的时候(关键节点就是在流程中一些特定的重要场景下,可以适当添加断言机制来判定,以便于后续流程的正常运行。)
- assert函数:assert 预期结果的text==实际定位的text,异常信息
-
1 #预期结果:可以在购物车中去查找到的手机
2 assert_text='苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G'
3 # text=driver.find_element('xpath','//a[text()="苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G"]').text
4 #使用断言进行判断是否可以在购物车中去查找到的手机
5 assert assert_text==driver.find_element('xpath','//a[text()="苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G"]').text,'加入购物车失败'
作业:将商品添加购物车流程,可以在购物车中再添加断言校验
1 # 课后作业:
2 # 1. 添加商品到购物车流程的自动化实现。商品推荐使用iPhone 6 plus的手机商品来实现流程
3 # 定位到搜索框,搜索iPhone 6 plus
4
5 from time import sleep
6
7 from selenium import webdriver
8
9 # 获取浏览器驱动
10 from selenium.webdriver.support.wait import WebDriverWait
11
12 driver=webdriver.Chrome()
13 #访问商城的url
14
15 driver.get('http://39.98.138.157/shopxo/index.php')
16 #浏览器最大化
17 driver.maximize_window()
18 driver.implicitly_wait(10)
19
20
21 def login():
22 #点击登录,进入登录页面
23 driver.find_element('xpath','//div[@class="menu-hd"]/a[text()="登录"]').click()
24 sleep(2)
25 #输入用户名
26 driver.find_element('xpath','//input[@name="accounts"]').send_keys('18700000000')
27 #输入密码
28 driver.find_element('xpath','//input[@name="pwd"]').send_keys('18700000000')
29 #点击登录按钮
30 driver.find_element('xpath','//button[text()="登录"]').click()
31 # #显示等待校验是否登录成功
32 # WebDriverWait(driver,10,0.5).until(
33 # lambda el:driver.find_element('xpath','//p[text()="登录成功"]'),message='登录失败'
34 # )
35 #使用assert校验是否登录成功
36 assert_text='18700000000'
37 username=driver.find_element('xpath','//span[@class="s-name"]/em[2]').text
38 assert assert_text==username,'登录失败'
39 def AddToCart():
40 #点击搜索框
41 driver.find_element('id','search-input').click()
42 #在搜索框中输入iPhone 6 plus
43 driver.find_element('id','search-input').send_keys('iPhone 6 plus')
44 #点击搜索按钮
45 driver.find_element('id','ai-topsearch').click()
46 #点击手机图标
47 driver.find_element('xpath','//p[text()="苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G"]').click()
48 print(driver.title)
49 #获取到所有句柄
50 hds=driver.window_handles
51 # 切换句柄
52 driver.switch_to.window(hds[1])
53 print(driver.title)
54 #选择套餐
55 driver.find_element('xpath','//li[@data-value="套餐一"]').click()
56 sleep(2)
57 #选择颜色
58 driver.find_element('xpath','//li[@data-value="银色"]').click()
59 sleep(2)
60 #选择容量
61 driver.find_element('xpath','//li[@data-value="32G"]').click()
62 #设置数量
63 driver.find_element('xpath','//input[@type="number"]').clear()
64 driver.find_element('xpath','//input[@type="number"]').send_keys(2)
65 # 点击加入购物车
66 driver.find_element('xpath','//button[@title="加入购物车"]').click()
67 #使用显示等待判断是否加入购物车成功 //p[text()="加入成功"]
68 #
69 # WebDriverWait(driver,10,0.5).until(
70 # lambda el:driver.find_element('xpath','//p[text()="加入成功"]'),message='加入失败'
71 # )
72 # 使用text判断是否加入购物车成功 //span[text()="购物车"]
73 driver.find_element('xpath','//span[text()="购物车"]').click()
74 #预期结果:可以在购物车中去查找到的手机
75 assert_text='苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G'
76 # text=driver.find_element('xpath','//a[text()="苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G"]').text
77 #使用断言进行判断是否可以在购物车中去查找到的手机
78 assert assert_text==driver.find_element('xpath','//a[text()="苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G"]').text,'加入购物车失败'
79
80
81 #调用登录方法
82 login()
83 #调用加入购物车的方法
84 AddToCart()
作业: 实现从登陆到个人中心用户信息修改整个流程,包含头像上传功能,结合断言完善整个自动化流程。
from time import sleep
from selenium import webdriver
# 获取浏览器驱动
from selenium.webdriver.support.wait import WebDriverWait
driver=webdriver.Chrome()
#访问商城的url
driver.get('http://39.98.138.157/shopxo/index.php')
#浏览器最大化
driver.maximize_window()
driver.implicitly_wait(10)
def login():
#点击登录,进入登录页面
driver.find_element('xpath','//div[@class="menu-hd"]/a[text()="登录"]').click()
sleep(2)
#输入用户名
driver.find_element('xpath','//input[@name="accounts"]').send_keys('18700000000')
#输入密码
driver.find_element('xpath','//input[@name="pwd"]').send_keys('18700000000')
#点击登录按钮
driver.find_element('xpath','//button[text()="登录"]').click()
# #显示等待校验是否登录成功
# WebDriverWait(driver,10,0.5).until(
# lambda el:driver.find_element('xpath','//p[text()="登录成功"]'),message='登录失败'
# )
#使用assert校验是否登录成功
assert_text='18700000000'
username=driver.find_element('xpath','//span[@class="s-name"]/em[2]').text
assert assert_text==username,'登录失败'
def information():
sleep(3)
driver.find_element('xpath','//span[text()="个人中心"]').click()
#修改头像
driver.find_element_by_link_text('修改头像').click()
driver.find_element('xpath','//input[@data-validation-message="请选择需要上传的图片"]').send_keys(r'D:\123\图片2.png')
sleep(2)
driver.find_element('xpath','//button[text()="确认"]').click()
#修改资料
sleep(2)
driver.find_element('xpath','//a[@class="am-icon-edit"]').click()
driver.find_element('xpath','//a[text()=" 编辑"]').click()
driver.find_element('xpath','//input[@placeholder="昵称"]').send_keys('小明')
driver.find_elements('xpath','//i[@class="am-icon-checked"]')[2].click()
driver.find_element('xpath','//button[text()="保存"]').click()
WebDriverWait.until(driver,10,0.5)(
lambda el:driver.find_element('xpath','//p[text()="编辑成功"]'),'编辑失败'
)
#调用登录方法
login()
#调用修改个人信息
information()