精华内容
下载资源
问答
  • 手势操作TouchAction

    千次阅读 2018-12-12 15:38:46
    对于Appium来说,手势操作都集中在TouchAction这个类中,以下是对几种手势api的使用例子 1. 点击操作 TouchAction ta=new TouchAction(driver);//创建一个TouchAction对象 ta.press(element).release().perform();...

    对于Appium来说,手势操作都集中在TouchAction这个类中,以下是对几种手势api的使用例子
    1. 点击操作

    TouchAction ta=new TouchAction(driver);//创建一个TouchAction对象
    ta.press(element).release().perform();//按一个元素
    ta.press(500, 450).release().perform();//按一个坐标点
    //按一个元素上的某个点,从左上角偏移100
    ta.press(element,100,100).release().perform();
    ta.tap(element).release().perform();//点一个元素
    ta.tap(300, 500).release().perform();//点一个坐标点
    //按一个元素的某个点,从左上角偏移100
    ta.tap(element, 100, 100).release().perform();

    2. 长按操作

    TouchAction ta=new TouchAction(driver);//创建一个TouchAction对象
    ta.longPress(element).release().perform();//长按某个元素
    ta.longPress(element, 5000).release().perform();//长按某个元素,时间是5秒
    ta.longPress(300, 500).release().perform();//长按某个坐标点
    ta.longPress(300, 500, 3000).release().perform();//长按某个坐标点,时间是5秒
    //长按某元素上的某个点,从左上角偏移100
    ta.longPress(element, 100, 100).release().perform();
    //长按某元素上的某个点,从左上角偏移100,时间是3秒
    ta.longPress(element, 100, 100, 3000).release().perform();

    3. 组合操作--拖拽

    TouchAction ta=new TouchAction(driver);//创建一个TouchAction对象
    ta.press(element1).moveTo(element2).release().perform();//两个元素互换位置
    //将元素拖拽到另外一个位置,moveTo中的是相对偏移量
    ta.press(element1).waitAction(500).moveTo(0,200).waitAction(500).release().perform();

    4. 连续滑动手势(可用于手势解锁)

    TouchAction ta=new TouchAction(driver);//创建一个TouchAction对象
    //从第一个点一直滑动到第四个点
    ta.press(200, 200).moveTo(0, 100).moveTo(100, 0).moveTo(100, 100).release().perform();
    //从第一个元素一直滑动到第四元素
    ta.press(element1).moveTo(element2).moveTo(element3).moveTo(element4).release().perform()

     

    展开全文
  • ActionChains和TouchAction可以用来模拟...ActionChains和TouchAction都是将动作存储在队列中,然后执行perform()方法,按队列顺序执行动作。 ActionChains 有两种执行方式 链式: ActionChains(driver).move_to_eleme

    ActionChains和TouchAction可以用来模拟点击、双击、滑动等事件。ActionChains用于执行PC端的鼠标移动、按键、拖拽等事件;TouchActions用法与ActionChains类似,可以用来模拟PC和移动端的点击、滑动、拖拽等手势操作。

    ActionChains和TouchAction都是将动作存储在队列中,然后执行perform()方法,按队列顺序执行动作。

    ActionChains

    有两种执行方式

    链式:

    ActionChains(driver).move_to_element(element).click(element).perform()
    

    分布式:

    actions=ActionChains(driver) 
    actions.move_to_element(element) 
    actions.click(element) 
    actions.perform()
    

    例一:点击,右键,双击操作

    测试页面:http://sahitest.com/demo/clicks.htm

    python代码:

    self.driver.get("http://sahitest.com/demo/clicks.htm") 
    click = self.driver.find_element_by_xpath("//*[@value='click me']") 
    doubleclick = self.driver.find_element_by_xpath("//*[@value='dbl click me']") 
    rightclick = self.driver.find_element_by_xpath("//*[@value='right click me']") 
    action= ActionChains(self.driver) 
    action.click(element_click) 
    action.context_click(element_rightclick) 
    action.double_click(element_doubleclick) 
    action. perform()
    

    例二:移动鼠标到某个元素上

    将鼠标移动到“新闻”后进行点击

    python代码:

    self.driver.get("http://www.baidu.com") 
    ele = self.driver.find_element_by_link_text("新闻") 
    action = ActionChains(self.driver) 
    action.move_to_element(ele) 
    action.click() 
    action.perform()
    

    例三:通过像素坐标点击页面

    使用move_by_offset()方法实现点击页面,像素坐标可以使用截图工具来获取。

    python代码:

    ActionChains(self.driver).move_by_offset(x, y).click().perform() #左键点击
    ActionChains(self.driver).move_by_offset(x, y).context_click().perform() #右键点击
    

    例四:模拟键盘输入

    模拟键盘输入可以使用win32api模块,也可以用 selenium的WebElement对象的send_keys()方法来实现:

    element = self.driver.find_element_by_id(element) element.send_keys(**"test"**) element.send_keys(Keys.BACK_SPACE) assert element.get_attribute("value") == "tes"
    

    ActionChains类也可以模拟键盘输入:

    Action = ActionChains(driver) action.send_keys(Keys.BACK_SPACE) # 回退 
    action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL) # CTRL+A 
    action.perform() # 执行
    

    测试页面:http://sahitest.com/demo/label.htm

    在文本框1中输入内容,然后将文本框1的内容复制粘贴到文本框2

    self.driver.get("http://sahitest.com/demo/label.htm") 
    ele1 = self.driver.find_element_by_xpath("/htmL/body/label[1]/input") 
    ele2 = self.driver.find_element_by_xpath("/html/body/label[2]/table/tbody/tr/td[2]/input") 
    ele1.click() 
    action= ActionChains(self.driver) 
    action.send_keys("testing").pause(1) 
    action.send_keys(Keys.SPACE).pause(1) # 空格 
    action.send_keys("1").pause(1) 
    action.send_keys(Keys.BACK_SPACE) #回退 
    action.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL) #CTRL+A 
    action.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL) #CTRL+C 
    action.key_down(Keys.CONTROL,ele2).send_keys('v').key_up(Keys.CONTROL) #CTRL+V 
    action.send_keys(Keys.BACK_SPACE).perform()
    

    例五:拖拽

    测试页面:http://sahitest.com/demo/dragDropMooTools.htm

    python代码

    self.driver.get("http://sahitest.com/demo/dragDropMooTools.htm") 
    drag_ele = self.driver.find_element_by_id("dragger") 
    Item1 = self.driver.find_element_by_xpath("/htmL/body/div[2]") 
    Item2 = self.driver.find_element_by_xpath("/html/body/div[3]") 
    Item3 = self.driver.find_element_by_xpath("/html/body/div[4]") 
    action= ActionChains(self.driver) 
    action.drag_and_drop(drag_ele, Item1).pause(1) # 方法1 
    action.click_and_hold(drag_ele).release(Item2).pause(1)# 方法2 
    action.click_and_hold(drag_ele).move_to_element(Item3).release()# 方法3 
    action.perform()
    

    TouchAction

    ActionChains无法操作H5页面,TouchAction可以对H5页面进行操作,实现点击,滑动,拖拽,模拟手势等各种操作。

    手势控制方法

    • double_tap 双击

    • flick 滑动

    • flick_element 从某个元素位置开始滑动

    • long_press 长按

    • move 手势移动指定偏移

    • Perform 执行

    • release 释放手势

    • scroll 点击并滚动

    • scroll_from_element 从某个元素位置开始手势点击并滚动(向下滑动为负数,向上滑动为正数)

    • flick_element——从某个元素位置开始手势滑动(负数:向上滑动,正数:向下滑动)

    • tap 在指定元素上点击

    • tap_and_hold 在指定元素上点击但不释放

    例一:点击、滑动

    百度搜索关键字,tap方法点击百度一下,滑动到底部,点击下一页

    python代码:

    self.driver.get("http://www.baidu.com") 
    input = self.driver.find_element_by_id("kw") 
    search = self.driver.find_element_by_id("su") 
    input.send_keys("test") 
    action = TouchActions(self.driver) 
    action.tap(search) 
    action.perform() 
    action.scroll_from_element(input, 0, 10000).perform() 
    next = self.driver.find_element_by_link_text("下一页 >") 
    next.click()
    

    总结

    ActionChains和TouchAction实现了鼠标和键盘的模拟输入,更详细的介绍可以参考官方文档 https://selenium-python.readthedocs.io/api.html

    --THE END--

    系列文章

    1、Selenium Webdriver 架构
    2、Selenium Web元素定位方法
    3、Selenium Web元素操作
    4、Web自动化测试:xpath & CSS Selector定位
    5、Selenium ActionChains、TouchAction方法
    6、Selenium switch_to方法
    7、Selenium Select下拉框
    8、Selenium多浏览器测试
    9、Selenium执行JavaScript脚本
    10、selenium/appium 等待方式介绍
    11、Selenium Grid:在多个主机上并行执行自动化脚本


    欢迎关注公众号:「测试开发小记」及时接收最新技术文章!

    展开全文
  • 针对最新版本(5.0.4)已不支持swipe等方法,所以可以用TouchAction类来封装成新的swipe方法。 1、按压控件 方法: press() 开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。 press(WebElement ...

    Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。针对最新版本(5.0.4)已不支持swipe等方法,所以可以用TouchAction类来封装成新的swipe方法。
    1、按压控件

    方法:

    press()
    

    开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。

    press(WebElement el, int x, int y)

    press也可以接收屏幕的坐标(x,y)。

    例:

    TouchAction(driver).press(x=0,y=308).release().perform()
    

    除了press()方法之外,本例中还用到了别外两个新方法。

    release() 结束的行动取消屏幕上的指针。
    
    Perform() 执行的操作发送到服务器的命令操作。
    

    2、长按控件

    方法:

    longPress()
    

    开始按压一个元素或坐标点(x,y)。 相比press()方法,longPress()多了一个入参,既然长按,得有按的时间吧。duration以毫秒为单位。1000表示按一秒钟。其用法与press()方法相同。

    longPress(WebElement el, int x, int y, Duration duration)

    例:

    TouchAction action = new TouchAction(driver);
    action.longPress(names.get(200),1000).perform().release();
    action.longPress(200 ,200,1000).perform().release();
    

    3、点击控件

    方法:

    tap()
    

    对一个元素或控件执行点击操作。用法参考press()。

    tap(WebElement el, int x, int y)

    例:

    TouchAction action = new TouchAction(driver);
    action.tap(names.get(200)).perform().release();
    action.tap(200 ,200).perform().release();
    

    4、移动

    方法:

    moveTo()
    

    将指针(光标)从过去指向指定的元素或点。

    movTo(WebElement el, int x, int y)

    其用法参考press()方法。

    例:

    TouchAction action = new TouchAction(driver);
    action.moveTo(names.get(200)).perform().release();
    action.moveTo(200 ,200).perform().release();
    

    5、暂停

    方法:

    wait()
    

    暂停脚本的执行,单位为毫秒。

    action.wait(1000);

    展开全文
  • TouchAction简单介绍: 官网地址:https://www.selenium.dev/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html 类似于ActionChains,ActionChains值时针对PC端程序鼠标模拟的一系列...

    官网地址:https://www.selenium.dev/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html
    TouchActions:模拟PC端和移动端的点击、滑动、拖拽、多点触控等多种手势操作

    TouchAction简单介绍:
    类似于ActionChains,ActionChains值时针对PC端程序鼠标模拟的一系列操作,对H5页面操作时无效
    TouchAction可以对h5页面操作,通过TouchAction可以实现点击、滑动、拖拽、多点触控、以及模拟手势的各种操作
    手势控制:
    tap:在指定元素上敲击
    double_tap:在指定元素上双击
    tap_and_hold:在指定元素上点击但不释放
    move:手势移动指定偏移(未释放)
    release:释放手势
    scroll:手势点击并滚动
    scroll_from_element:从某个元素位置开始手势点击并滚动(向下滑动为负数,向上滑动为正数)
    long_press:长按
    flick:手势huad
    flick_element:从某个元素位置开始手势滑动(向上为负数,向下为正数)
    perform:执行

    举例:百度页面搜索“selenium测试”,并滑动到最底部

    class TestTouchAction
    展开全文
  • 之前使用swipe提示无效之后,网上百度了说是要使用touchaction,后来使用了touchaction之后还是一直无法滑动 ``` accept = driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'接受并...
  • TouchAction辅助类 说明:TouchAction类中封装了所有基于手势操作方法(轻巧、拖拽、滑动) 使用TouchAction辅助类的原因 : 基于之前的API方法,元素的滑动只能基于两个坐标点或两个元素之间的话,多个元素无法实现。...
  • TouchAction,类似于ActionChains,ActionChains只是针对PC端程序鼠标模拟的一系列操作,对H5页面操作是无效的。TouchAction可以对H5页面操作,通过TouchAction可以实现点击、滑动、拖拽、多点触控,以及模拟手势等...
  • TouchAction是Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。针对最新版本(5.0.4)已不支持swipe等方法,所以可以用TouchAction类来封装成新的swipe方法。 1.press按压方法 开始按压一个元素或坐标...
  • 这些需要针对控件元素的滑动操作,或者点至点、元素至元素之间的滑动操作,使用swipe方法显然不是很方便,这时候就可以用到appium里提供TouchAction类和MultiAction类。 一,TouchAction类 1,TouchAction类由...
  • TouchAction ActionChains是模拟鼠标操作,执行PC端的鼠标点击、双击、右键、拖拽等事件;TouchAction是模拟人的手指在屏幕上操作,执行PC和移动端的点击、滑动、拖拽、多点触控等多种手势操作 序号 方法 说明 ...
  • from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom appium.webdriver.common.multi_action import MultiActionfrom time import sleep"""class TouchAction(object): ...
  • 多点触控 TouchAction

    2019-03-29 11:34:00
    #TouchAction #TouchAction方法是appium自已定义的新方法 # * 短按 (press) * 释放 (release) * 移动到 (moveTo) * 点击 (tap) * 等待 (wait) * 长按 (longPress) * 执行 (perform) #以python为例 from appium....
  • 笔者今天给大家分享一些有关appium的知识,主要来和大家说一下appium API 之 TouchAction 操作,下面这些方法是笔者是在书上看到的,觉得很详细,来分享给大家(只是搬运工哦)。 Appium的辅助类,主要针对手势操作,...
  • swipe不能使用,需要使用TouchAction进行滑动,首先我们要明确模拟器的坐标,经过我测试查看,模拟器的最左上角坐标是(0,0),横向X增大,纵向像下Y增大。 int width = appiumDriver.manage().window().getS...
  • d be clever and use <code>TouchAction</code> like this to tap just outside of the element that had displayed the soft keyboard: <pre><code> def dismiss_keyboard(element): elem_x = element....
  • App自动化之TouchAction滑动-----初级篇(2)

    千次阅读 热门讨论 2020-05-21 12:36:56
    837,y=760).move_to(x=56,y=868).release().perform() time.sleep(5) TouchAction(driver).press(x = 837,y=760).move_to(x=56,y=868).release().perform() time.sleep(5) TouchAction(driver).press(x = 837,y=760)...
  • 1.按压press 开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的...比如TouchAction(driver).press(x=0,y=308).release().perform() release() 结束的行动取消屏幕上的指针。释放,相当于松手 Pe...
  • TouchActions类、TouchAction
  • 需要模拟一些上拉,下滑的操作,最初考虑使用使用selenium ActionChains来模拟操作,但是ActionChains 只是针对PC端程序鼠标模拟的一系列操作对H5页面操作时无效的,后来阅读了下selenium的文档发现TouchAction可以...
  • TouchAction(driver) .press(x=25, y=1538) .move_to(x=978, y=1523) .release() .perform()#左右滑动是ok的 TouchAction(driver) .press(x=526, y=2040) .move_to(x=610, y=649) .release() .perform()#上下滑动...
  • appium新手入门(12)—— appium API 之 TouchAction 操作 Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。 1、按压控件 方法: press() 开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的...
  • appium元素坐标定位TouchAction

    千次阅读 2018-08-15 16:50:10
    from appium.webdriver.common.touch_action import TouchAction 真正使用的时候 TouchAction(driver).press(x=250, y=1700).release().perform() 使用这个命令就可以模拟点击了刚才的红框框
  • 登录页面: 完成用户名、密码的输入...图片截图: 通过查看属性clickable =true ,明明是可以的,但是不行 ... TouchAction action = new TouchAction(androidDriver); PointOption pointOption = new PointOption
  • 在做移动端页面自动化测试时,遇到了一个用...通过翻阅文档,我发现可以用selenium的TouchAction模拟用户在移动端的操作。TouchAction的文档地址:https://seleniumhq.github.io/selenium/docs/api/py/webdriver/s
  • TouchAction类中的tap()方法和press()方法

    千次阅读 2018-11-26 18:49:43
    def test_2lotteryDraw(): driver.tap([(500,2200), (1000,2300)],500...from appium.webdriver.common.touch_action import TouchAction TouchAction(driver).press(x=700, y=2250).release().perform()  
  • Appium页面滑动连续操作-TouchAction

    千次阅读 2018-08-10 09:56:33
    TouchAction包含一系列操作,例如短按、长按、点击、移动、暂停,由不同的操作可以组成一套动作,使用TouchAction需要先导入对应的模块: from appium.webdriver.common.touch_action import TouchAction   对应...
  • 之前篇说过driver.tap可以通过duration参数设置实现长按,除外TouchAction也可以,而且还可以用之实现多个点击的事件集,废话不多说直接贴码: # 长按方法,长按坐标、元素通用 def TouchActionlong_press(self,...
  • from appium.webdriver.common.touch_action import TouchAction 3.1 按压、释放、执行   按压 使用的方法是:  press() , 开始按压一个元素或者坐标点(x,y),可以通过手指按压手机屏幕的某个位置,而 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,879
精华内容 751
关键字:

touchaction