2-5-1断言
断言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()