iPhone screen/Android 屏幕上的 X 轴和 Y 轴格式是什么?

What is the X and Y axis format on an iPhone screen/Android screen?

我一直在研究 iPhone 屏幕上设置的 X 轴和 Y 轴,因为我正在尝试使用 Appium 对应用程序进行 运行 自动化测试。我正在处理的部分工作是滑动,但我 运行 正在处理移动点、X 和 Y 点的问题。

我不知道iPhone屏幕或Android屏幕上X和Y轴的限制是什么。因此,我不确定我的光标从哪里滑过或滑到哪里。

到目前为止,我已经能够通过下面的代码进行一次滑动,

TouchAction action1 = new TouchAction((PerformsTouchActions) driver);
        action1.press(PointOption.point(250,200))
                .waitAction(new WaitOptions().withDuration(Duration.ofMillis(250))) //you can change wait durations as per your requirement
                .moveTo(PointOption.point(50, 250))
                .release()
                .perform();

        Thread.sleep(5000);

这 运行 一次向左滑动成功,但第二次滑动 运行 成功,但没有向左滑动屏幕。就像在滑动它一样,但它不会将其移动到超过所需的阈值以将其移动到下一页。

让我们知道上面的代码被放在一个for循环中,如下所示。

 for(int i = 0; i <= 3; i++){
        TouchAction action1 = new TouchAction((PerformsTouchActions) driver);
        action1.press(PointOption.point(250,200))
                .waitAction(new WaitOptions().withDuration(Duration.ofMillis(250))) //you can change wait durations as per your requirement
                .moveTo(PointOption.point(50, 250))
                .release()
                .perform();

        Thread.sleep(5000);

    }

是否有任何 iPhones 或 Androids 的文档显示 X 轴和 Y 轴的设置、限制等

编辑:

第一段代码放在for循环之外。我相信那是正确刷屏的代码。一旦进入for循环,屏幕就无法正常滑动了。我相信我没有在 for 循环中使用正确的语法。 如果有人对如何将滑动功能正确合并到 for 中有任何建议,那将会很有帮助。

X, Y coordinate depend on the device/emulator you are using for automation if device has large display X,Y value will be high.

我建议不要在 it can throw exception points are out of device whenever you will be shifted on small screen Device 坐标的帮助下滑动或滚动时使用 hardcoded value of X, Y

请看一下如何在滚动到底部时借助设备的高度和宽度来获取动态 X、Y 值

public void scrollToBottom() {

// we are  scrolling to bottom so X will be constant so we are taking mid point in width. 
      int  x = driver.manage().window().getSize().width / 2;

// starting of Y is from 20% of height as we have one bar in all device for showing network and battery status
      int start_y = (int) (driver.manage().window().getSize().height * 0.2);

// end of Y is 80% of height
      int end_y = (int) (driver.manage().window().getSize().height * 0.8);

// here scrolling length is (80% -20%) 60%.
        TouchAction dragNDrop = new TouchAction(driver)
                        .press(PointOption.point(x,start_y)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(500)))
                        .moveTo(PointOption.point(x, end_y))
                        .release();
        dragNDrop.perform();
    }

如果你想get X,Y coordinate of any Mobile Element你可以按照下面的方式获得

MobileElement element = (MobileElement) driver.findElementByAccessibilityId("SomeAccessibilityID");
Point location = element.getLocation();

int leftX = element.getLocation().getX();
int rightX = leftX + element.getSize().getWidth();
int middleX = (rightX + leftX) / 2;
int upperY = element.getLocation().getY();
int lowerY = upperY+element.getSize().getHeight();
int middleY = (upperY + lowerY) / 2;