【问题标题】:scrolling is not working in a page opened within a page in appium在 appium 的页面中打开的页面中滚动不起作用
【发布时间】:2019-05-02 06:39:19
【问题描述】:

滚动在 android 应用程序的普通页面中工作正常。但如果我点击任何元素,它将作为现有页面上的新页面打开,使用 touchaction 在 appium 自动化中滚动不起作用。这是我的向下滚动代码

public void scrollDown(AppiumDriver driver){
  try {
    int height = driver.manage().window().getSize().getHeight();
    TouchAction touchAction = new TouchAction(driver);
    touchAction.longPress(5, height * 2 / 3).moveTo(5, height / 
    3).release().perform();
      }
  catch(Exception e) {
    e.getMessage();
}}

【问题讨论】:

  • 你能添加你使用的代码和你得到的错误吗?
  • 我没有收到任何错误。如果我循环通过此代码,它在正常页面中工作正常。但任何页面如弹出(我的意思是打开当前页面)它都不起作用
  • 请在问题中添加代码,而不是在 cmets 中,您可以在编辑时使用插入代码按钮轻松插入并整理。 (按钮在编辑窗口的顶部工具栏上)
  • 尝试将代码 touchAction.longPress(5, height * 2 / 3).moveTo(5, height / 3) 中的 5 更改为 200 或任何其他数字touchAction.longPress(200, height * 2 / 3).moveTo(200, height / 3)

标签: java android selenium-webdriver appium


【解决方案1】:

您可能不会在滑动视图的边界内开始滑动。如果是这种情况,一个很好的调试方法是激活 androids 开发人员选项中的Pointer location 选项,然后观察自动化的位置。

现在,如果这是我预期的问题,那么您需要围绕有效点的位置进行一些数学运算。我建议查看以下功能

MobileElement el = myElement; // Pretend this is a real element :D
el.getSize();   // This has a getHeight() and getWidth() function
el.getLocation; // This has a getX() and getY() function

现在你可以做什么(假设你在一个矩形区域中滑动是找出最小和最大的 x 和 y 位置。

获得 Y 位置很简单:

int smallestY = el.getLocation.getY();
int largestY = smallestYPosition + el.getSize().getHeight();

现在获取 X 个位置:

int smallestX = el.getLocation.getX();
int largestX = smallestX + el.getSize().getHeight();

现在在滑动时使用这些点。

这将在基本情况下有效,但据我了解,如果元素比屏幕尺寸宽,则会出现问题,因此您必须处理。

希望这可以帮助您开发一种适用于您给定案例的方法。不幸的是,根据目前提供的信息,我无法提供开箱即用的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多