需求:验证列表每条资讯里的用户数是否正确。该列表分页请求数据,每页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. 使用linq对ado.net查询出来dataset集合转换成对象(查询出来的数据结构为一对多)

    public async Task<IEnumerable<QuestionAllInfo>> GetAllQuestionByTypeIdAsync(int id) { st ...

  2. 【C#进阶学习】泛型

    一.泛型引入 需求:传入一个类型(整型/日期/字符串或其他),打印出它的类型和内容. 1.初级版 public class CommonMethod { /// <summary> /// ...

  3. localdb启动

    前提:vs自带localdb,不用另外装.其次,vs里的的“sql server 对象资源管理器”(在视图里)可以常规管理它.相比之下,SSMS更专业(推荐),按情况选用. 正文: 安装完毕后…… C ...

  4. 微服务架构 ------ Ubuntu下Docker的安装

    1.准备一个全新的Ubuntu环境 2.准备安装Docker及其依赖 apt-get update 更新数据源 apt-get -y install apt-transport-https ca-ce ...

  5. 【微信小程序】抽象组件使用示例

        1.配置页面路径 ./app.json { "pages":[ "pages/index/index", "pages/logs/logs&q ...

  6. 隐马尔科夫模型(Hidden Markov Models) 系列之一

    转自:http://blog.csdn.net/eaglex/article/details/6376826 介绍(introduction) 通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能 ...

  7. web-api POST body object always null

      If the any of values of the request's JSON object are not the same type as expected by the service ...

  8. 通过SOFA看Java服务端如何实现运行时的模块化

    本文阅读时间大约7分钟. 今天我们谈谈SOFA模块化,首先看一段SOFA的介绍: SOFABoot是蚂蚁金服开源的基于Spring Boot的研发框架,它在Spring Boot的基础上,提供了诸如 ...

  9. 在知识爆炸的年代如何学习,避免成为PPT架构师

    计算机的发展大体遵循摩尔定律,IT要学的东西越来越多,感觉无从下手 然后发现许多人,专门喜欢说这些名词概念装高大上,脱离一线开发,技术跟风盲目崇拜新的骚东西,比如docker,k8s,微服务,open ...

  10. Python基础(三)--流程控制之if、while、for,break与continue

    一.流程控制之if……else…… if语句是指编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一 if 条件1: 缩进的代码块 elif 条件2: 缩进的代码 ...