需求:验证列表每条资讯里的用户数是否正确。该列表分页请求数据,每页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自动化实例:遍历点击带有滚动条的列表每一项的更多相关文章

  1. (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】

    前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ...

  2. appium Ui自动化调起应用点击

    appium Ui自动化调起微信并点击登录按钮的java代码(对的,就这么一丢丢). public class testWX { public static void main(String[] ar ...

  3. ui自动化笔记 selenium_webdriver,ui自动化框架(web)

    Selenium学习笔记 selenium webdriver是业界公认ui自动化测试的标准,其封装的api可以对浏览器的任何地方进行操作 selenium2.0和selenium3.0的区别? 3. ...

  4. 基于python2+selenium3+pytest4的UI自动化框架

    环境:Python2.7.10, selenium3.141.0, pytest4.6.6, pytest-html1.22.0, Windows-7-6.1.7601-SP1 特点:- 二次封装了s ...

  5. UI自动化,你值得拥有

    去年春节联欢晚会,为了那张“敬业福”,全家都卯足了劲儿“咻一咻”,连节目都顾不上看了.当时我就想,要是能自动化该多好,不停点击屏幕,屏幕不疼手还疼呢,何况还不好分心,生怕错过了“敬业福”.玩“咻一咻” ...

  6. 洗清UI自动化鸡肋说的不白之冤

    人类文明发展的一个重要标识是工具的诞生,当人类开始制作工具来提高生产力时,就逐渐拉开了与其他生物的距离.曾在2013年,<Google如何测试软件>中提到的分层自动化金字塔,轰动业界.而在 ...

  7. UI自动化selenium

    1.什么是UI自动化?模拟人用代码的方式去操作页面2.为什么要做UI自动化?后期迭代的时候,老功能比较多,人工维护成本较大,重复性工作较多,这个时候就考虑因为UI自动化3.什么时候做UI自动化?项目稳 ...

  8. 基于Docker的UI自动化初探

    本文来自网易云社区 前言 一直以来,项目迭代的时间都是比较紧张的,开发加班加点coding,测试加班加点提bug.都说"时间像海绵里的水,挤挤总会有的"(当然这里的"挤挤 ...

  9. Python Selenium 搭建Web UI自动化

    Python搭建UI自动化环境 下载Python3 Python官网 PyCharm 环境配置 安装Python 勾选Add Python to PATH,一直下一步. 验证:CMD输入Python ...

随机推荐

  1. 《EOPL》 : CPS风格真是神奇

    计算的栈好像可以随便跳转了一样. Exception 的 try/catch , resume机制都可以借此实现 还可以实现 Erlang中的 spawn,线程调度器,以及基本的 Mutex 同步机制

  2. div等高布局

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. cache verilog实现

    cache原理: https://www.cnblogs.com/mikewolf2002/p/10984976.html cache的verilog实现 实现的cache是16k, 4way组相连c ...

  4. uni-app常用 HTML5+APP 设置

    1.锁定屏幕方向 锁定屏幕方向后屏幕只能按锁定的屏幕方向显示,关闭当前页面后仍然有效. 可再次调用此方法修改屏幕锁定方向或调用 unlockOrientation() 方法恢复到应用的默认值. 锁定屏 ...

  5. flink dataset join笔记

    1.dataset的join连接,通过key进行关联,一般情况下的join都是inner join,类似sql里的inner join key包括以下几种情况: a key expression a ...

  6. Python Django 实现简单注册功能

    Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Crea ...

  7. nginx日志设置

    环境:nginx1.16.1 (1)日志类型:access_log(访问日志) error_log(错误日志)rewrite_log 访问日志:通过访问日志我们可以得到用户的IP地址.浏览器的信息,请 ...

  8. 异步HttpClient大量请求

    由于项目中有用到HttpClient异步发送大量http请求,所以做已记录 思路:使用HttpClient连接池,多线程 public class HttpAsyncClient { private ...

  9. Springboot JackSon

    1. SpringBoot JSON工具包默认是Jackson,只需要引入spring-boot-starter-web依赖包,自动引入相应依赖包: <dependency> <gr ...

  10. cmd 计划任务

    Schtasks /create /sc ScheduleType /tn TaskName /tr TaskRun [/s Computer [/u [Domain\]User [/p Passwo ...