【问题标题】:Automate iOS webkit within application在应用程序中自动化 iOS webkit
【发布时间】:2018-09-16 21:48:15
【问题描述】:

我目前正在开发一个 ios 应用程序。该应用程序中的一项功能需要一些 WebKit 自动化。我想做一些类似于 selenium 的事情;我想使用其 ID 或 Xpath 将文本输入文本字段,然后使用其 ID 或 Xpath 按下按钮。

示例:在 google.com 上的 google 搜索栏中输入文本,然后以编程方式单击搜索。

我已经在 selenium (Java) 中完成了上述操作。虽然我正在寻找一种在 ios 上执行此操作的方法(使用 swift)。无论如何我可以在本地做到这一点吗?或者有没有我可以用来做这个的cocoapod?如果没有,是否可以使用 swift 运行 javascript 文件来执行此操作?

我还知道一个名为 WKZombie 的 cocoapod,它完全可以满足我的需求,尽管它的文档相当混乱,而且它是一个无头浏览器(我希望用户看到正在发生的事情,所以这不起作用,尽管如果没有其他方法,我可以抓取 HTML 并显示它)。另外我不认为 appium 会工作,因为我希望它可以在独立应用程序中工作。

(另外,这是我的第一篇文章,所以我对任何不正确的格式或类似的东西表示歉意)

【问题讨论】:

  • 您最终弄清楚如何自动浏览多个页面了吗?

标签: ios swift selenium automation webkit


【解决方案1】:

您可以通过 JavaScript 与 WKWebView 视图中加载的页面进行通信:

  • 最简单的方法是使用evaluateJavaScript(_, completionHandler),它允许您注入代码,例如更改 DOM、触发动作等。

  • 或者,您可以在创建 Web 视图时注入用户脚本 (WKUserScript),该脚本可以回调您的 Swift 代码,这需要更多设置但也更强大。

【讨论】:

  • 非常感谢。这正是我想要的!
  • 我了解了如何在一个页面上运行 evaluateJavaScript(_, completionHandler),但是您将如何运行它来自动执行多个页面的凭据导航?
  • 您的所有页面很可能都位于同一个网页视图中。您可以根据当前 URL 确定要注入哪个脚本。
【解决方案2】:

要在您的应用程序中托管浏览器,您需要使用的类是WKWebView(替换旧的 UIWebView)。 WKWebView 的evaluateJavaScript 方法可以用来将JS 注入到WKWebView 实例中。您可以在要注入的 JS 中包含文本框填充、按钮单击魔术。

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    相关资源
    最近更新 更多