仅使用子字符串 Xcode 在 UI Test 中查找元素

sta*_*set 2 xcode ui-testing uiaccessibility xcode-ui-testing

我的应用程序中有一个用于创建帐户的网络视图(我没有编写,也无法更改关联的网页)。

\n\n

通常,单击任何按钮/链接都很容易,但这里我的“创建帐户”按钮的字符串在其标题中具有很棒的字体,使得记录器崩溃并且无法以编程方式调用该按钮。

\n\n

这是它打印的内容app.webViews.allElementsBoundByIndex

\n\n
Element subtree:\n \xe2\x86\x92WebView, 0x1c03823c0, traits: 8589934592, {{0.0, 0.0}, {736.0, 414.0}}\n...\nLink, 0x1c0384100, traits: 8590065666, {{242.0, 357.0}, {252.0, 44.0}}, label: \'create account \xef\x84\x85\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如你所看到的,很棒的字体变成了 \xef\x84\x85我无法检测到的字体,例如:

\n\n
webViews.staticTexts["create account \xef\x84\x85"].tap()\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题

\n\n
    \n
  1. 如何仅使用查询的子字符串来查看 staticTexts (例如,这里是 webViews.staticTexts["create acco"].tap() )?
  2. \n
  3. 有没有更好的方法来查找并单击此按钮和相关链接?
  4. \n
\n

Ole*_*tha 8

您可以使用上 的方法NSPredicate来查找包含部分单词/短语的静态文本。containing(_:)XCUIElementQuery

let predicate = NSPredicate(format: "label CONTAINS 'create account'")
let app = XCUIApplication()
let createAccountText = app.webViews.links.containing(predicate)
createAccountText.tap()
Run Code Online (Sandbox Code Playgroud)