【问题标题】:How can I tap a pin on Google Maps using Appium in an iOS app?如何在 iOS 应用程序中使用 Appium 在 Google 地图上点击图钉?
【发布时间】:2016-04-26 22:17:24
【问题描述】:

问题:

我在使用 Appium 测试在原生内部 iOS 应用中实现的 Google 地图时遇到问题。具体来说,我无法让 Appium 与地图中出现的应用程序生成的图钉进行交互。通过 Appium 检查器无法以任何方式找到或识别引脚。

预计当我点击一个图钉时,会在其上方出现一个信息框,其中包含相关数据。

问题:

如何让 Appium 开始与我的原生 iOS 应用中的那些 Google 地图图钉进行交互? Appium 能做到这一点吗?如果不是,我应该用什么来做这个测试?

我尝试过的解决方案(不成功):

  • 点击图钉的坐标。因为我每次打开地图时都会在地图上设置位置,而且我知道那里会有哪些大头针以及在哪里,我想我可以让 Appium 在 X/Y 坐标处轻按。不幸的是,这不起作用 - 没有任何反应。以下是我曾经尝试点击特定 X/Y 坐标的内容:

    Appium::TouchAction.new.tap(x: 100, y: 200, fingers:1).release.perform

  • 切换到 WEBVIEW_3。我尝试将驱动程序的上下文切换到 Webview_3,认为这可能有效。不幸的是,当我这样做时,驱动程序无法识别应用程序中的任何元素,从而使其无用。这是我用来尝试的代码:

    set_context “WEBVIEW_3" get_page_class

    'get_page_class' 返回 nil,表示在此上下文中找不到任何元素。当我在“NATIVE_APP”中运行它时,会发现很多元素。

我正在使用的信息:

  • Appium 1.4.13
  • Ruby 2.2.1p85(2015-02-26 修订版 49769)[x86_64-darwin14]
  • appium_lib (8.0.1, 8.0.0, 7.0.0, 6.0.0)
  • 模拟器:iPad Air 2,iOS 9.0,纵向(已尝试其他设备和 iOS 实现 - 无效)
  • Xcode 7.1.1 (7B1005)

【问题讨论】:

  • 到目前为止你尝试过什么?你有一些代码可以提供我们可以看到问题所在吗?
  • 感谢您的提问,大卫。我更新了“我尝试过的解决方案”部分,其中包含一些我尝试在坐标处点击并切换上下文的代码示例。

标签: ios ruby google-maps appium


【解决方案1】:

所以我想通了!在查看了执行 javascript 的其他想法、将测试移植到 Xcode 等之后,我开始再次检查“Appium::TouchAction”,主要是通过网站http://www.rubydoc.info/github/appium/ruby_lib/Appium/TouchAction

我正在使用这个(如上所述):

Appium::TouchAction.new.tap(x: 100, y: 200, fingers:1).release.perform

查看该网页上用于 TouchAction 的不同方法,我注意到还有一个“按下”操作。所以,我试过了:

Appium::TouchAction.new.press(x: 100, y: 200).wait(5).release.perform

这就像一个魅力!我想知道 - 是“新闻”起作用还是“等待(5)”?我在没有“等待”的情况下再次尝试了“按下”代码,但它失败了。然后我尝试了“等待”和“点击”:

Appium::TouchAction.new.tap(x: 100, y: 200).wait(5).release.perform

这也有效。

结论:

我通过在点击后添加“.wait(5)”解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 2020-03-10
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多