前幾天見測試群里有人問,如果定位web頁面上的滾動日歷,安靜簡單的定位,分享給大家
滾動日歷
我們先看看滾動日歷是什么樣子的,下圖就是安靜在網上隨便找的滾動日歷內容。

手工操作
在寫代碼前,首先要弄清楚,手工測試的時候如何進行操作滾動日歷的,手工測試時,我們通過鼠標上的滾輪進行操作的,通過向上或者向下進行滾動選擇日期。那么問題來了,我們怎么控制鼠標的滾輪呢?前面介紹了鼠標的操作,其實還有鼠標的滾動沒有給大家介紹,借此機會,進行補充
TouchActions
TouchActions是selenium中的一個庫,主要用來進行操作H5頁面上的一些鼠標操作,比如鼠標滑動,點擊,拖動等
中文文檔:https://python-selenium-zh.readthedocs.io/zh_CN/latest/7.2%20%E8%A1%8C%E4%B8%BA%E9%93%BE/
導入方法: from selenium.webdriver import TouchActions
主要方法有:
- double_tap(on_element) 雙擊
- flick_element(on_element, xoffset, yoffset, speed) 從元素開始以指定的速度移動
- long_press(on_element) 長按不釋放
- move(xcoord, ycoord) 移動到指定的位置
- perform() 執行鏈中的所有動作
- release(xcoord, ycoord) 在某個位置松開操作
- scroll(xoffset, yoffset) #滾動到某個位置
- scroll_from_element(on_element, xoffset, yoffset) 從某元素開始滾動到某個位置
- tap(on_element) 單擊
- tap_and_hold(xcoord, ycoord) 某點按住
本章處理日歷操作主要運用了元素滾動內容,處理此操作,安靜先整理下思路
1、定位日歷上的元素
2、通過scroll_from_element(on_element, xoffset, yoffset) 方法進行滾動
如果沒有用過方法的小伙伴們,可以查看下源碼進行分析
def scroll_from_element(self, on_element, xoffset, yoffset): """ 從on_element開始觸摸和滾動,通過xoffset和yoffset移動。 :Args: - on_element: The element where scroll starts. - xoffset: X offset to scroll to. - yoffset: Y offset to scroll to. """ self._actions.append(lambda: self._driver.execute( Command.TOUCH_SCROLL, { 'element': on_element.id, 'xoffset': int(xoffset), 'yoffset': int(yoffset)})) return self
其中xoffset,和yoffset表示X ,Y軸
注意:向上移動值負,向下移動值為正
方法也看了,思路也清楚了,動手寫一寫代碼
from selenium import webdriver import time from selenium.webdriver import TouchActions driver = webdriver.Chrome() driver.get('https://www.jq22.com/yanshi3714') time.sleep(2) driver.switch_to.frame("iframe") driver.find_element_by_xpath('//*[@id="text"]').click() list = driver.find_elements_by_xpath('//*[@class="dwwo"]') year = list[0] month = list[1] day = list[2] a = TouchActions(driver) # 滑動月 a.scroll_from_element(month,0,-8).perform() # 滑動日 a.scroll_from_element(day,0,8).perform() # 滑動年 a.scroll_from_element(month,0,8).perform()

通過上面的動圖發現,已經成功的進行了滾動,具體的實際范圍的話,可能需要自己進行多次每次滾動多少進行選擇了。
安靜只是簡單的介紹了TouchActions的一種用法,其他的用法,以后也會慢慢進行補充。點個關注,不容錯過~~
