(03)selenium模擬H5觸摸滑動

最近做移動端H5頁面的自動化測試時候,需要模擬一些上拉,下滑的操作,最初考慮使用使用selenium ActionChains來模擬操作,但是ActionChains 只是針對PC端程序鼠標模擬的一系列操作對H5頁面操作時無效的,

比如:

# 將頁面滾動條拖到底部,需要設置sleep(1)
sleep(1)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# driver.execute_script("window.scrollTo(0, 10000);")
# sleep(3)

后來閱讀了下selenium的文檔發(fā)現TouchAction可以對移動端頁面自動化操作;

首先使用TouchAction的時候首先需要在頭上引入該模塊
from selenium.webdriver.common.touch_actions import TouchActions
通過scroll_from_element、flick_element 方法來實現下拉操作

TouchAction提供的一些方法:

  • double_tap(on_element) #雙擊
  • flick_element(on_element, xoffset, yoffset, speed) #從元素開始以指定的速度移動
  • long_press(on_element)   #長按不釋放
  • move(xcoord, ycoord)   #移動到指定的位置
  • perform()   #執(zhí)行鏈中的所有動作
  • release(xcoord, ycoord)   #在某個位置松開操作
  • scroll(xoffset, yoffset) #滾動到某個位置
  • scroll_from_element(on_element, xoffset, yoffset) #從某元素開始滾動到某個位置
  • tap(on_element) #單擊
  • tap_and_hold(xcoord, ycoord) #某點按住

因為我們模擬的是移動端的H5自動化測試,首先需要我們將瀏覽器設置成為手機瀏覽器(設置之后,模擬會更加真實)

1.以元素為起點向下滑動,實現下拉操作

scroll_from_element(on_element xoffset yoffset)
on_element:開始元素滾動。
xoffset:X偏移量。
yoffset:Y偏移量。

注意:向下滑動為負數,向上滑動為正數

import time

from selenium import webdriver

from selenium.webdriver.common.touch_actions import TouchActions

"""設置手機的大小"""

mobileEmulation = {'deviceName': 'Apple iPhone 5'}

options = webdriver.ChromeOptions()

options.add_experimental_option('mobileEmulation', mobileEmulation)

driver = webdriver.Chrome(chrome_options=options)

driver.get('http://m.test.90dichan.com')

driver.maximize_window()

"""定位操作元素"""

button = driver.find_element_by_xpath('//*[@id="pullrefresh"]/div[2]/ul/li[2]/a/div[2]/span')

time.sleep(3)

Action = TouchActions(driver)

"""從button元素像下滑動200元素"""

Action.scroll_from_element(button, 0, -200).perform()

time.sleep(3)

driver.close()

2.以元素為起點用一定速度向下滑動,實現下拉操作

flick_element(on_element, xoffset, yoffset, speed);
on_element #操作元素定位
xoffset   #x軸偏移量
yoffset #y軸偏移量
speed #速度

注意:向上滑動為負數,向下滑動為正數

import time

from selenium import webdriver

from selenium.webdriver.common.touch_actions import TouchActions

"""設置手機的大小"""

mobileEmulation = {'deviceName': 'Apple iPhone 5'}

options = webdriver.ChromeOptions()

options.add_experimental_option('mobileEmulation', mobileEmulation)

driver = webdriver.Chrome(chrome_options=options)

driver.get('http://m.test.90dichan.com')

driver.maximize_window()

"""定位操作元素"""

button = driver.find_element_by_xpath('//*[@id="pullrefresh"]/div[2]/ul/li[2]/a/div[2]/span')

time.sleep(3)

Action = TouchActions(driver)

"""從button元素像下滑動200元素,以50的速度向下滑動"""

Action.flick_element(button, 0, 200, 50).perform()

time.sleep(3)

driver.close()

參考:
[python selenium TouchAction模擬移動端觸摸操作]: https://www.cnblogs.com/mengyu/p/8136421.html
[ python+selenium滑動式驗證碼解決辦法 ]: https://blog.csdn.net/zha6476003/article/details/79002430
[ python selenium 下拉列表定位 ]:https://blog.csdn.net/xm_csdn/article/details/53376839

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.contexts contexts(self): Returns the contexts within th...
    七月尾巴_葵花閱讀 2,292評論 0 10
  • 這篇文章在介紹官網的同時使用了比較多的腳本示例,示例里遇到的問題有部分在本篇文章進行了解釋,還有一篇文章專門記錄了...
    顧顧314閱讀 13,089評論 3 32
  • 前言: Appium Python API全集,不知道哪個大神整理的,這里貼出來分享給大家。 1.contex...
    Roshan_閱讀 2,038評論 0 5
  • 我們可以借助插件來做 打開插件,找到自己需要的驗證碼 篩選有用的路徑 把對應的視圖函數也拿過來,注意還需要一個ge...
    程序員之路閱讀 1,429評論 0 1
  • (一)今天是婆婆的生日,全家人中午聚在一起給婆婆過生日,一周多沒見面的四個孩子,熱鬧極了! 每一年因為各種節(jié)日和紀...
    sunfeng0912閱讀 261評論 0 4

友情鏈接更多精彩內容