在appium页面内打开的页面中无法滚动

时间:2018-11-30 05:47:12

标签: java android selenium-webdriver appium

滚动在android应用程序中的正常页面中运行正常。但是,如果我单击任何元素,它将在现有页面上以新页面的形式打开,因此在使用touchaction的appium自动化中无法进行滚动。这是我向下滚动的代码< / p>

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();
}}

1 个答案:

答案 0 :(得分:0)

您可能无法在滑动视图的边界内开始滑动。如果是这种情况,调试的一种好方法是激活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();

现在在刷卡时使用这些点。

这在基本情况下会起作用,但是据我了解,如果该元素的宽度大于屏幕尺寸,则会出现问题,因此您必须进行处理。

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