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

无法在ios-appium上从下向上滑动

冯枫
2023-03-14

我想在ios上设置wifi状态,为此,我需要从控制中心底部向上滑动。

    dimension = driverWrapper.getIosDriver().manage().window().getSize();
    int middleX = dimension.getWidth() / 2;
    int y = dimension.getHeight();
   driverWrapper.getIosDriver().swipe(middleX,y-10,middleX,150,600);

在我将java客户端升级到4.0.0和appium升级到1.5.2之前,它工作正常。

我得到一个错误:error:VerboseError:point不在屏幕范围内

记录如下:

[debug] [UIAuto] Socket data received (49 bytes)
[debug] [UIAuto] Got result from instruments: {"status":0,"value":{"width":320,"height":568}}
[MJSONWP] Responding to client with driver.getWindowSize() result: {"width":320,"height":568}
[HTTP] <-- GET /wd/hub/session/31411e39-f408-418f-b9b8-e28b80ba1b35/window/current/size 200 1071 ms - 98 
[HTTP] --> POST /wd/hub/session/31411e39-f408-418f-b9b8-e28b80ba1b35/touch/perform {"actions":[{"action":"press","options":{"x":160,"y":558}},{"action":"wait","options":{"ms":100}},{"action":"moveTo","options":{"x":160,"y":284}},{"action":"release","options":{}}]}
[MJSONWP] Calling AppiumDriver.performTouch() with args: [[{"action":"press","options":{"x":160,"y":558}},{"action":"wait","options":{"ms":100}},{"action":"moveTo","options":{"x":160,"y":284}},{"action":"...
[debug] [iOS] Executing iOS command 'performTouch'
[debug] [UIAuto] Sending command to instruments: target.touch([{"touch":[{"x":160,"y":558}],"time":0.2},{"touch":[{"x":160,"y":558}],"time":0.30000000000000004},{"touch":[{"x":320,"y":842}],"time":0.5}])

[debug] [Instruments] [INST] 2016-06-19 07:39:13 +0000 Debug: Got new command 6 from instruments: target.touch([{"touch":[{"x":160,"y":558}],"time":0.2},{"touch":[{"x":160,"y":558}],"time":0.30000000000000004},{"touch":[{"x":320,"y":842}],"time":0.5}])

[debug] [Instruments] [INST] 2016-06-19 07:39:13 +0000 Debug: evaluating target.touch([{"touch":[{"x":160,"y":558}],"time":0.2},{"touch":[{"x":160,"y":558}],"time":0.30000000000000004},{"touch":[{"x":320,"y":842}],"time":0.5}])

[debug] [Instruments] [INST] 2016-06-19 07:39:13 +0000 Debug: target.touch(__NSCFArray)

[debug] [Instruments] [INST] 2016-06-19 07:39:13 +0000 Debug: point is not within the bounds of the screen

知道是怎么回事吗?

谢谢

共有3个答案

涂承运
2023-03-14

带Appium 1.6.5的iOS10 Python版本:

def swipe_up(self):

logging.info("swipe up")
sleep(1)
window_size = self.driver.get_window_size()  # this returns dictionary
sleep(1)
el = self.driver.find_element(*self.configuration.CommonScreen.WEB_VIEW)
action = TouchAction(self.driver)
sleep(1)
start_x = window_size["width"] * 0.5
start_y = window_size["height"]
end_x = window_size["width"] * 0.5
end_y = window_size["height"] * 0.5
action.press(el, start_x, start_y).wait(100).move_to(el, end_x, end_y).release().perform()
sleep(1)

对于iOS9,您需要将等待更改为1000。

伯丁雷
2023-03-14
JavascriptExecutor executor = driver;

executor.executeScript(
    "target.frontMostApp().mainWindow().dragInsideWithOptions({startOffset:{x:0.5, y:0.1}, endOffset:{x:0.5, y:0.7}, duration:0.8});");

检查这是否有效。。如果没有,则尝试进一步减小y:0.01。

莫宝
2023-03-14

滑动方法条件(仅适用于IOS)以避免此错误

>

  • 0

    0个

    务实的永久解决方案

    为了简化我们的日常生活,写下这样一个函数

    public void swipeFinger(startx, starty, endx, endy, duration) {
       driver.swipe(startx, starty, startx - endx, starty - endy, duration);
    }
    

    RCA for Error:VerboseError:点不在屏幕范围内

    问题是驱动程序的endx和endy输入参数。对于IOS,滑动方法的实现方式不同。

    它实际上是DOS和DeltayIOS。看看这个图像并考虑你的手指在原点(两个轴的交点)。

    如果您想向下或右侧滑动手指,您需要传递正endx和endy正值,如果您想向下向上或从右向左滑动,您需要传递您想要滑动手指的像素的负值。

    20像素右扫

    驱动程序。轻扫(startx、starty、20、0、持续时间)

    因为您不想在垂直方向上移动手指,所以y始终为零!

    20像素向下滑动

    驱动程序。滑动(开始、开始、0、20、持续时间)

    因为您不想在水平方向上移动手指,所以x始终为零!

    现在向上和向左滑动操作

    20像素向上滑动动作

    驱动程序。轻扫(startx,starty,0,-20,持续时间)

    20像素左划动作

    driver.swipe(starx, starty,-20,0,持续时间)

  •  类似资料:
    • 在文档中,appium为java提供了以下选项: 我在测试中集成了这一点,但在导航到可以使用swipe的屏幕后,使用swipe的方法将不会执行该操作。。。在故障异常面板中,我收到以下错误:“org.openqa.selenium.WebDriverException:尚未实现”。 我想从左向右滑动,但还没有找到其他解决方案。。。 更新:我已经设法通过使用以下代码刷: 问题是,它将只刷一次,即使使用

    • 我在尝试使用ios应用程序上的滑动功能时遇到问题。目前正在将Appium v1.3.5与Cucumber/RubyMine v7.04联合使用。 我尝试使用一个范围的x,y坐标。然而,我仍然只能刷一半,无法点击屏幕上的元素。 以前有人遇到过这个问题吗? 请发送错误消息:

    • 我想使用appium在特定的xpath上执行向左滑动。不管怎样,我能做到吗?

    • 我试图使用Appium 1.6在iOS 10上的某个特定元素上向左滑动,以显示删除按钮。 触摸操作和向左滑动的滑动代码在appium 1.4中运行良好,但问题是在我们迁移到appium 1.6之后才出现的。 非常感谢您的帮助

    • 我正试图向下滑动联系人屏幕,但它不工作。 这是我尝试过的代码。 你们能帮我一下我做错了什么吗。 任何帮助都将不胜感激。

    • 我已经安装了Appium和所有必要的东西,通过iOS模拟器运行应用程序 然后我启动了一个模拟器并启动了Appium(确保在启动前在设置中设置了应用程序的路径) 我不知道应用程序是否应该在启动后立即开放。这就是为什么我运行督察。似乎设备已连接,应用程序的安装已启动。显示启动屏幕后,应用程序崩溃了。我用另一个应用程序尝试了同样的流程,得到了同样的结果。以下是Appium的日志: