python selenium TouchAction模擬移動端觸摸操做(十八)

 最近作移動端H5頁面的自動化測試時候,須要模擬一些上拉,下滑的操做,最初考慮使用使用selenium ActionChains來模擬操做,可是ActionChains 只是針對PC端程序鼠標模擬的一系列操做對H5頁面操做時無效的,後來閱讀了下selenium的文檔發現TouchAction能夠對移動端頁面自動化操做;html

首先使用TouchAction的時候首先須要在頭上引入該模塊python

from selenium.webdriver.common.touch_actions import TouchActions

經過scroll_from_element、flick_element 方法來實現下拉操做web

由於咱們模擬的是移動端的H5自動化測試,首先須要咱們將瀏覽器設置成爲手機瀏覽器;chrome

1.以元素爲起點以必定速度向下滑動,實現下拉操做瀏覽器

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

注意:測試

  向上滑動爲負數,向下滑動爲正數spa

# -*- coding: utf-8 -*-
# @Time    : 2017/12/28 10:26
# @Author  : Hunk
# @File    : ex86.py.py
# @Software: PyCharm
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()

2.以元素爲起點向下滑動,實現下拉操做code

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

注意:orm

  向下滑動爲負數,向上滑動爲正數htm

# -*- coding: utf-8 -*-
# @Time    : 2017/12/28 10:26
# @Author  : Hunk
# @File    : ex86.py.py
# @Software: PyCharm
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()

下面咱們看下下拉的效果

下面看一下TouchAction提供的其餘那些方法:

  • 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)                                        #某點按住

  其實上述的部分方法與ActionChains 中的鼠標操做很類似,因爲與鼠標操做的書寫方法一致的,因此在這裏不詳細介紹,具體書寫方法你們能夠參考下【python selenium-webdriver 元素操做之鼠標操做(四)】內容,下面咱們主要來介紹下移動的操做。

相關文章
相關標籤/搜索