selenium---滾動日歷定位(TouchActions)


  前幾天見測試群里有人問,如果定位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的一種用法,其他的用法,以后也會慢慢進行補充。點個關注,不容錯過~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM