Xcode UI 测试 - 通过 id 在 Webview 中查找元素
Posted
技术标签:
【中文标题】Xcode UI 测试 - 通过 id 在 Webview 中查找元素【英文标题】:Xcode UI Testing - Finding element in Webview by id 【发布时间】:2016-01-19 08:19:50 【问题描述】:我们的应用是混合的,包含 webview。 我正在尝试使用 Xcode UI 测试自动化我们的应用程序。 我能够使用以下方法找到 Web 按钮:
let app = XCUIApplication()
app.launch()
let button = app.staticTexts["Button's text"]
但在我们的一项测试中,我们测试了本地化——这意味着文本发生了变化,静态文本查询不再有效。 找不到任何文档如何通过他的 id(甚至类名)定位元素。有任何想法吗?
【问题讨论】:
可能重复 ***.com/questions/32623869/… ***.com/questions/32623869/… 谢谢!但这无济于事。他们正在谈论在我的文本是动态的时使用“staticTexts”。 @NirH 你有没有发现如何做到这一点?谢谢! @you786 据我研究 - 不可能开箱即用。我最终为每个按钮保留了不同语言的文本字典。 【参考方案1】:我在尝试填写 SFSafariViewController
中的文本字段时遇到了类似的问题。
我发现使用aria-label
属性可以让我定位页面中的元素,例如
<input role="textbox" aria-label="email" type="email" value="" name="user[email]" id="user_email">
然后在你的代码中选择那个元素
webViewsQuery.textFields["email"]
【讨论】:
您在哪里检查以获得这些属性? 我无法在我的应用中通过 textFields 进行查询,但我希望可以。出于某种原因,我唯一可以查询的两件事是按钮和静态文本【参考方案2】:通过 id(ui-test 代码,例如在 swift 上):
app.buttons["yourBtnAccessibilityId"]
这个 id 设置在你的 应用程序代码中(例如在 obj-c 上)并且应该是唯一的。
yourButton.accessibilityIdentifier = @"yourBtnAccessibilityId";
按类(ui-test code):
app.buttons.elementBoundByIndex(1)
【讨论】:
这里的问题显然是关于 WebViews,而不是屏幕上的常规按钮。以上是关于Xcode UI 测试 - 通过 id 在 Webview 中查找元素的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 在尝试进行涉及 web 视图的 UI 测试时崩溃
如何通过 Xcode 7 中的 UI 测试在 iOS 应用程序中运行代码?
在 Xcode 7 UI 自动化中关闭 Touch Id 操作