需求:驗證列表每條資訊裏的用戶數是否正確。該列表分頁請求數據,每頁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,測試結果:
修復後,測試結果