web自动化测试——web自动化实战(八)
测试需求:验证商城的搜索功能
测试用例
用例名称:搜索手机
用例步骤:
1.打开被测页面
2.输入搜索词:手机
3.点击搜索按钮
4.断言:每一个搜索结果,都包含“手机”
import time
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get("http://101.34.221.219:8010/") #控制浏览器,访问百度
el_1=driver.find_element(By.XPATH,'//*[@id="search-input"]') #输入框
el_1.send_keys('手机') #输入内容
el_2=driver.find_element(By.XPATH,'//*[@id="ai-topsearch"]') #搜索按钮
el_2.click() #点击
# 获取搜索结果
# /html/body/div[4]/div/ul/li[1]/div/p[2]
# /html/body/div[4]/div/ul/li[2]/div/p[2]
# ....
# /html/body/div[4]/div/ul/li[5]/div/p[2]#他们都是小的
# /html/body/div[4]/div/ul/li[1]/div/a/div/p #这个是一个整框
#定位失败的上一行,进行debuger,我忘了debug这个知识点了
#需要代码暂停一下
time.sleep(5)
el_list=driver.find_elements(By.XPATH,'/html/body/div[4]/div/ul/li/div/a/div/p')
print(el_list)
assert len(el_list)==6 #断言:有6个搜索结果
for el in el_list: #从列表中取出每一个元素
assert "手机" in el.text #元素的文本中,包含”手机“
driver.quit()
上面是其中一个用例,那么我们还需要执行一个反例,那现在目前的方法是把这个代码复制下,修改下以下内容,这样就得到一个反例。
import time
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get("http://101.34.221.219:8010/") #控制浏览器,访问百度
el_1=driver.find_element(By.XPATH,'//*[@id="search-input"]') #输入框
el_1.send_keys('连衣裙') #输入内容
el_2=driver.find_element(By.XPATH,'//*[@id="ai-topsearch"]') #搜索按钮
el_2.click() #点击
# 获取搜索结果
# /html/body/div[4]/div/ul/li[1]/div/p[2]
# /html/body/div[4]/div/ul/li[2]/div/p[2]
# ....
# /html/body/div[4]/div/ul/li[5]/div/p[2]#他们都是小的
# /html/body/div[4]/div/ul/li[1]/div/a/div/p #这个是一个整框
#定位失败的上一行,进行debuger,我忘了debug这个知识点了
#需要代码暂停一下
time.sleep(5)
el_list=driver.find_elements(By.XPATH,'/html/body/div[4]/div/ul/li/div/a/div/p')
print(el_list)
assert len(el_list)!==6 #断言:没有6个搜索结果
for el in el_list: #从列表中取出每一个元素
assert "手机" not in el.text #元素的文本中,包含”手机“
driver.quit()
问题:用例的相似性较高,而且还要复制代码,而且第二次还进行了浏览器的启动和关闭,每一次启动和关闭大概需要5s钟的时间,所以效率较慢,代码的维护性不好。
1.相似性太高
2.浏览器频繁启动关闭
3.代码维护性不好