Appium的滑动方法

本文介绍了使用Appium进行滑动操作的三种方法:swipe、flick和scroll。swipe方法允许设置滑动起点、终点和持续时间,flick则不包含持续时间。对于iOS的scroll操作,需要注意方向与直觉相反,且提供了针对scrollView的滑动方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Appium 滑动:
有三种方式:


 第一种:swipe

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. JavascriptExecutor js = (JavascriptExecutor) driver;  
  2. WebElement  element = driver.findElementByXPath("xpath");  
  3. HashMap<String, Double> swipeObject = new HashMap<String, Double>();  
  4. swipeObject.put("startX", startX);  
  5. swipeObject.put("startY", startY);  
  6. swipeObject.put("endX", endX);  
  7. swipebject.put("endY", endY);  
  8. swipeObject.put("duration", duration);  
  9. swipeObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));  
  10. js.executeScript("mobile: swipe", swipeObject);  


 

X,Y可为coordinator,也可以是percent,大于1 为coordinator, 小于1 为percent,比如0.5 代表50%

duration单位为秒, Android 可以设置0.1-60,iOS设置0.5-60

需要滑动特定的对象时需要指定的element,只是在名目上滑动式就可以不指定element

第二种: flick 区别swipe是没有duration

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. JavascriptExecutor js = (JavascriptExecutor) driver;  
  2. WebElement  element = driver.findElementByXPath("xpath");  
  3. HashMap<String, Double> flickObject = new HashMap<String, Double>();  
  4. flickObject.put("startX"0.8);  
  5. flickObject.put("startY"0.5);  
  6. flickObject.put("endX"0.2);  
  7. flickObject.put("endY"0.5);  
  8. flickObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));  
  9. js.executeScript("mobile: flick", flickObject);  

第三种: scroll only for iOS scrollViewscroll方向滑动:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. JavascriptExecutor js = (JavascriptExecutor) _driver;  
  2. HashMap<String, String> scrollObject = new HashMap<String, String>();  
  3. scrollObject.put("direction", sDrection);          
  4. js.executeScript("mobile: scroll", scrollObject);  

方向接受参数:Right, Left, Up, Down

重要:方向和我们认为的方向相反,比如要向下滑,就用Up,应为Up的意思是滑动到手机的顶部,左右也是一样,左滑就是Right

scroll对象滑动:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. JavascriptExecutor js = (JavascriptExecutor) driver;  
  2. WebElement  element = driver.findElementByXPath("scrollview中元素的xpath");  
  3. HashMap<String, String> scrollObject = new HashMap<String, String>();  
  4. scrollObject.put("element", ((RemoteWebElement) element).getId());  
  5. js.executeScript("mobile: scroll", scrollObject);  
### 如何在 Appium 中实现滑动手势 #### 使用 Java 实现滑动手势 对于Java语言,在Appium中执行滑动操作可以通过`TouchAction`类完成。此方法适用于解决常见的滑动问题,尤其是在iOS 7.1及以上版本环境中[^2]。 ```java import io.appium.java_client.MobileElement; import io.appium.java_client.TouchAction; import org.openqa.selenium.By; // 假设driver已经初始化好 MobileElement element = (MobileElement) driver.findElement(By.id("someId")); new TouchAction(driver).press(element).moveTo(xOffset, yOffset).release().perform(); ``` 上述代码展示了如何创建一个简单的滑动动作,其中`element`是要开始触摸的元素位置,而`xOffset`和`yOffset`定义了手指移动的距离。 #### Python中的滑动手势实现 当采用Python作为开发语言时,可以利用`touch_action`模块来进行更复杂的交互行为,如下所示[^3]: ```python from appium import webdriver from time import sleep desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.package', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) sleep(2) # 定义起始坐标和结束坐标 start_x = 300 start_y = 800 end_x = 300 end_y = 300 # 执行滑动操作 driver.swipe(start_x, start_y, end_x, end_y, duration=500) ``` 这段脚本首先设置了设备连接参数并启动了一个新的会话;接着等待两秒让应用程序加载完毕;最后通过指定起点和终点坐标来模拟一次向上的屏动作,持续时间为500毫秒。 #### 特殊情况下的滑动处理 针对一些特殊情况,比如存在不定时弹窗干扰的情况下,可以在尝试进行滑动之前先捕获可能出现的异常状况,并对其进行适当处理[^4]。 ```python try: # 正常流程:定位目标元素准备滑动 target_element = driver.find_element_by_id("targetID") except NoSuchElementException as e: # 如果找不到目标,则检查是否有弹窗覆盖视线 alert_if_present = driver.switch_to.alert if alert_if_present is not None: alert_if_present.accept() # 或者 dismiss() # 尝试再次寻找目标元素 target_element = driver.find_element_by_id("targetID") # 继续执行正常的滑动逻辑... ``` 这种方法能够有效提高自动化测试过程中应对突发情况的能力,确保即使有意外因素也不会影响到后续的操作准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值