目录:
1、条件控制语句
2、异常捕获
try:
…
except:
…
finally:
3、取Excel值做操作
4、判断元素是否存在的方法封装
5、完整ui自动化批量加车脚本(取Excel的值搜索商品并完成对应商品的加车)
一、条件控制语句
多个if做条件判断:
首先走color判断:弹出的加车中判断是否存在色块,存在即点击,不存在则跳过
无论color满不满足,都会走size判断:弹出的加车中判断是否存在尺码,存在即点击,不存在则跳过
无论前面color和size满不满足,都会走addcar判断:弹出的加车中判断是否存在加车按钮,存在即点击,不存在则跳过
if Color is True:
time.sleep(1)
driver.find_element_by_id("com.xx:id/color_view").click()
if Size is True:
time.sleep(1)
driver.find_element_by_id("com.xx:id/tv_text").click()
if AddCar is True:
time.sleep(1)
driver.find_element_by_id("com.xx:id/detail_buy").click()
关于if条件控制相关链接:https://www.runoob.com/python3/python3-conditional-statements.html
二、异常捕获
搜索一个商品,判断进入无结果页时,走else分支;有结果页时,走加车操作
try:
driver.find_element_by_id("com.xx:id/iv_empty")
except NoSuchElementException as E:
print("走搜索有结果分支")
driver.find_element_by_id("com.xx:id/iv_car_add").click()
time.sleep(1)
xxxxxxxxx(加车相关操作)
else:
print("走搜索无结果分支的操作")
finally:
print("此语句总被执行")
三、Excel取值操作
1、导入xlrd库:import xlrd
2、对Excel进行操作
# 对excel的操作
# 打开excle
xlr = xlrd.open_workbook(r'C:\\Users\\10099999\\Desktop\\goodid.xlsx')
# 通过索引获取工作表
table = xlr.sheets()[0]
# print(table)
# 总共多少行
rows = table.nrows
print('\n'"文件总行数%s" % rows)
# 获取单元格值,第i行第几列,索引从0开始
data = table.cell(i, 0).value
driver.find_element_by_id("com.xx:id/tv_searchbar_box").send_keys("%d"%data)
四、封装判断元素是否存在的方法
注意find_elements与find_element的区别,调用__len__()的方法返回容器中元素的个数,当>= 1此元素存在
# 判断元素是否存在
def FindElement(self,element1):
if self.driver.find_elements(element1).__len__() >= 1:
return True
else:
return False
或者另一种判断方法:
#元素判断
def FindElement(self, param1):
try:
element1 = self.diver.find_element_by_id(param1)
except NoSuchElementException as E:
return False
else:
return True
五、完整ui自动化批量加车脚本
import time
import unittest
import xlrd
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.wait import WebDriverWait
from method.Serach_Icon import Search_Icon
class test_SearchAddCar(unittest.TestCase):
def setUp(self):
self.imgs = []
self.addCleanup(self.cleanup)
def add_img(self):
self.imgs.append(self.driver.get_screenshot_as_base64()) # 每次操作步骤截图
return True
def cleanup(self):
pass
def test_case1(self):
driver = self.driver
# 首页搜索icon封装方法
Search_Icon(self)
#手机太快,元素未定位到,启用等待
WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("com.xxx:id/tv_search_box").is_displayed())
i = 10
while i < 15:
# 对excel的操作
# 打开excle
xlr = xlrd.open_workbook(r'C:\\Users\\100999999\\Desktop\\goodid.xlsx')
# 通过索引获取工作表
table = xlr.sheets()[0]
# print(table)
# 总共多少行
rows = table.nrows
print('\n'"文件总行数%s" % rows)
# 获取单元格值,第几行第几列,索引从0开始
data = table.cell(i, 0).value
driver.find_element_by_id("com.xx:id/tv_search_box").send_keys("%d"%data)
driver.find_element_by_id("com.xx:id/btn_search_search").click()
#等待视图按钮出现
WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("com.xx:id/btn_search_list")).is_displayed()
#断言
time.sleep(1)
result = driver.find_element_by_id('com.xx:id/tv_search_box').text
self.assertEqual(result, "%d"%data, msg='用例失败')
#判断
try:
driver.find_element_by_id("com.xx:id/iv_empty")
except NoSuchElementException as E:
print("走有结果分支")
driver.find_element_by_id("com.xx:id/iv_car_add").click()
time.sleep(1)
# 元素判断
#color
if driver.find_elements_by_id("com.xx:id/color_view").__len__() >= 1:
time.sleep(1)
driver.find_element_by_id("com.xx:id/color_view").click()
#size
if driver.find_elements_by_id("com.xx:id/tv_text").__len__() >= 1:
time.sleep(1)
driver.find_element_by_id("com.xx:id/tv_text").click()
#add car
if driver.find_elements_by_id("com.xx:id/detail_buy").__len__() >= 1:
time.sleep(1)
driver.find_element_by_id("com.xx:id/detail_buy").click()
i += 1
else:
i+=1
self.add_img() # 添加截图操作
# SearchAgain
driver.find_element_by_id("com.xx:id/tv_search_box").click()
time.sleep(2)