【问题标题】:Find elements in an UIWebView在 UIWebView 中查找元素
【发布时间】:2016-09-06 16:55:33
【问题描述】:

我想编写一个使用 Google 登录的 UI 自动化测试。 webview 嵌入在应用程序中。在 Earlgrey 中,如何选择文本字段或 Web 视图的按钮。 谢谢

【问题讨论】:

  • 如果您的 webview 嵌入在应用程序中,那么您需要选择的每个元素都应该有一个可访问性包装器。您应该能够使用它与元素交互并运行常规 EarlGrey 语句。是否有您想要处理的特定层次结构或案例?
  • 根本没有特定的层次结构。例如,我只想按下Allow 按钮。尝试使用匹配器grey_buttonTitle(@"Allow"),但找不到按钮。我怀疑 EarlGrey 可以在 UIWebview 中选择一个元素
  • 请注意,grey_buttonTitle 只选择 UIButton 类,grey_text(@"Allow") 是这里更好的选择。
  • 感谢您的提示。我试过grey_text,但还是找不到元素。
  • grey_accessibilityLabel(@"Allow") 或 gray_accessibilityID(@"Allow) 有效吗?另外,它是 WKWebView 还是 UIWebView?

标签: ios ui-automation earlgrey


【解决方案1】:

当测试失败时,EarlGrey 提供了一个很好的 UI 层次结构日志。我的建议是编写一个导航到登录视图的测试,然后强制 EarlGrey 失败。然后在日志中,查找您需要的元素。您应该会看到如下内容:

--<WebAccessibilityObjectWrapper:0x7fbca2422fb0; AX=Y; AX.value='Email'; AX.frame={{72, 145}, {270, 38}}; AX.activationPoint={207, 164}; AX.traits='UIAccessibilityTraitNone'; AX.focused='Y'>
--<WebAccessibilityObjectWrapper:0x7fbca4e82360; AX=Y; AX.value='Password'; AX.frame={{72, 201}, {270, 38}}; AX.activationPoint={207, 220}; AX.traits='UIAccessibilityTraitNone'; AX.focused='N'>

从此日志中您可以看到这两个元素可以通过以下方式访问:

EarlGrey().selectElementWithMatcher(grey_accessibilityValue("Email"))
EarlGrey().selectElementWithMatcher(grey_accessibilityValue("Password"))

【讨论】:

  • 或者您甚至可以设置一个断点并将其打入 gdb:po [GREYElementHierarchy hierarchyStringForElement:[UIApplication sharedApplication].keyWindow]
猜你喜欢
  • 2017-03-08
  • 2023-04-10
  • 2017-12-03
  • 2012-12-12
  • 1970-01-01
  • 2012-01-17
  • 2020-03-29
  • 2012-10-05
相关资源
最近更新 更多