zoukankan      html  css  js  c++  java
  • UI自动化实例:遍历点击带有滚动条的列表每一项

    需求:验证列表每条资讯里的用户数是否正确。该列表分页请求数据,每页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,测试结果:

    修复后,测试结果

  • 相关阅读:
    玩转xss
    Anonim小白成长计划
    mssql注入与绕过
    了解mssql数据库
    2020年度学习规划
    access 注入
    bypasswaf 之报错注入
    bypasswaf之盲注
    sql注入常用函数与bypasswaf
    一篇关于数据库的另类操作
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/11672660.html
Copyright © 2011-2022 走看看