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,測試結果:

 

修復後,測試結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章