当前位置: 首页 > 知识库问答 >
问题:

如何使用TouchActions appium方法滚动页面?

阎安邦
2023-03-14

我为Android原生应用程序编写了自动测试,并被迫解决了滚动问题。

我需要滚动Android应用程序页面,并谷歌下一个方法:http://appium.io/docs/en/commands/interactions/touch/scroll/

TouchActions action = new TouchActions(driver);
action.scroll(element, 10, 100);
action.perform();

但在第一行我得到了一个例外“java.lang.ClassCastException:io.appium.java_client.android.AndroidDriver不能被强制转换到org.openqa.selenium.interactions.HasTouchScreen”

我的环境是:java、jdk 1.8.0_65、appium 1.6.1

附言:我试着使用触摸动作——从这些自动化移动手势中,它是有效的,但是方法是不建议使用的。

.press(100,100) 
.moveTo(100,100)

P.P.S.我还试图执行adb命令,smth如下:

  "adb -s shell input touchscreen swipe " + startx + " " + starty + " " + endx + " " + endy + " " + duration"

但它也不适合我,我想使用原生的appium方法,当然如果可能的话。

共有2个答案

赵锐
2023-03-14

这里是完美的工作指令。

     TouchAction action = new TouchAction(driver); 
             action.press(PointOption.point(115, 915)).waitAction(WaitOptions.waitOptions(Duration.ofSeconds(3)))
                             .moveTo(PointOption.point(115, 150)).release().perform();
艾心远
2023-03-14

确保从io.appium.java_client导入了TouchAction

import io.appium.java_client.TouchAction;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import java.util.concurrent.TimeUnit;
import static java.time.Duration.ofSeconds;

TouchAction action = new TouchAction(driver); 
action.press(PointOption.point(115, 650)).waitAction(WaitOptions.waitOptions(ofSeconds(1)))
                .moveTo(PointOption.point(115, 350)).release().perform();

更新:你需要升级你的硒java版本到最新的稳定版本

import org.openqa.selenium.interactions.touch.TouchActions;

//AppiumDriver<WebElement> driver;
TouchActions action1=new TouchActions(driver);
    action1.scroll(element,x1,x2).perform();
 类似资料:
  • 问题内容: 我目前正在使用Selenium(Python中的Firefox驱动程序)对滚动进行硬编码,它是否可以在页面上平滑地上下滚动?当页面中的图像加载时,页面可以比正常增长20倍。 我需要上下滚动多次,而不丢失页面的任何部分。 当前方法效率不高,有时无法滚动到页面的某些部分。以下是我当前的代码 问题答案: 如果在Python中使用Selenium,则可以使用它… 或类似的规定。您可以添加刹车来

  • 问题内容: 使用jQuery,我想禁用主体的滚动: 我的想法是: 组 捕获当前 绑定到正文滚动事件,将scrollTop / scrollLeft设置为捕获的值。 有没有更好的办法? 更新: 我知道有人会在想“为什么他不只是在面板上使用?”。 请不要提出这个建议,因为我还有其他原因。 问题答案: 我发现执行此操作的唯一方法与您所描述的类似: 抓住当前滚动位置(不要忘记水平轴!)。 将溢出设置为隐藏

  • 问题内容: 有没有一种方法可以使用JavaScript / jQuery控制浏览器滚动? 当我向下滚动页面一半,然后触发重新加载时,我希望页面进入顶部,但它会尝试找到最后一个滚动位置。所以我这样做: 但是没有运气。 编辑 : 因此,当页面加载后,我打电话给您时,您的两个答案都有效。但是,如果我只是在页面上刷新,则看起来浏览器会在事件发生后计算并滚动到其旧的滚动位置(我也测试了body onload

  • 本文向大家介绍Swift 使用 Observe 监测页面滚动的实现方法,包括了Swift 使用 Observe 监测页面滚动的实现方法的使用技巧和注意事项,需要的朋友参考一下 Swift 以前是通过addObserver来实现对某个属性的变化监听,而最新的变化,书写起开更加方便。 一定要用属性赋值当前的 observe 结果,没有的话可能会造成 change 不生效。 对 UIScrollView

  • 问题内容: 我在我的网站上无法使用jQuery功能。它的作用是使用该 函数识别窗口何时更改其滚动位置,并在更改时调用一些函数以从服务器加载数据。 问题是滚动位置稍有变化并立即将数据加载到底部时,就会立即调用该函数。但是,我希望实现的是在滚动/页面位置到达底部时加载新数据,就像Facebook feed那样。 但是我不确定如何使用jQuery检测滚动位置吗? 问题答案: 您可以使用jQuery的方法

  • 我需要滚动到facebook页面的末尾,这样我就可以加载所有的帖子,我怎么能在页面还在加载的时候用selenium做到这一点?