需求:验证列表每条资讯里的用户数是否正确。该列表分页请求数据,每页10条,每次滚动到底部自动增量请求10条。

实现自动化必要性:

  1 资讯每天不定时更新需经常性验证, 程序更新或者环境切换需验证所有资讯数据

  2 每条资讯手工验证需点击7次,并手工核对数据【一次全量验证,100条资讯需点击700次】

程序步骤:

1 打开页面

2 定义计数器count=0;

3 点击每个条目,验证需要验证的数据

  点击第count个条目【需将待点击条目滚动显示到页面再点击;滚动后有可能会加载数据,重新获取下总条目数】;

  验证该条目内部数据逻辑;

  返回列表页;计数器+1;下一个循环..

4 关闭浏览器

#coding:utf-8
"""
核对所有资讯的用户数是否正确
""" url = 'http://testurl' # 测试地址 from selenium import webdriver
import time driver = webdriver.Chrome()
driver.implicitly_wait(2)
driver.get(url) # 打开资讯页面 count = 0 #资讯计数器 while(1):
time.sleep(0.5)
js = 'var ele = document.getElementsByClassName("van-cell__title");ele[{0}].scrollIntoView()'.format(count) # 将待点击资讯滚动显示到页面
driver.execute_script(js) news_list = driver.find_elements_by_css_selector(".rqread-info-list li.rqread-item .van-cell") # 页面带有分页请求,滚动后重新获取下资讯数目 try:
ele = news_list[count]
except IndexError as e: #count超出索引说明已遍历所有,退出循环
print('test finish')
break title = ele.text
ele.click() # 点击资讯打开详情页
time.sleep(0.5)
# xpath = "//div[@class='rqread-info-list']//li[{0}]".format(count+1) # 也可以用xpath取元素
# driver.find_element_by_xpath(xpath).click()
print('总计{0}条资讯,当前测试第{1}条'.format(len(news_list), count + 1)) js = 'var ele = document.getElementsByClassName("ot-taglist");ele[0].scrollIntoView();'
driver.execute_script(js) # 滚动到详情页最底部验证数据 for i in [1,2]:
css = ".ot-taglist>span:nth-child({0})".format(i)
user_num_ele = driver.find_element_by_css_selector(css) # 用户数按钮
num = user_num_ele.text
user_num_ele.click() # 点击按钮打开用户列表页
time.sleep(0.5)
user_num = len(driver.find_elements_by_class_name("sr-item-box")) # 取列表用户数
if num[4:-1]!= str(user_num):
print('资讯【{0}】不一致。资讯详情页:{1},客户列表个数:{2}'.format(title,num[4:-1],user_num))
driver.back() # 返回资讯详情页
driver.back() # 返回资讯列表页
count += 1 driver.close() # 关闭浏览器

存在bug,测试结果:

UI自动化实例:遍历点击带有滚动条的列表每一项-LMLPHP

修复后,测试结果

UI自动化实例:遍历点击带有滚动条的列表每一项-LMLPHP

05-22 23:37