gpt4 book ai didi

ios - 在UI测试中填充TextField失败

转载 作者:行者123 更新时间:2023-12-01 19:59:54 25 4
gpt4 key购买 nike

我正在尝试在iOS应用程序中进行简单的UI测试。我想用一些文本填充textfield,但是总是出现错误。

第一次尝试:

let searchField = app.textFields.elementBoundByIndex(0);
searchField.tap()
searchField.typeText("Holy Grail")

该字段突出显示,出现键盘,几秒钟后,随机出现以下之一:
- Timed out waiting for IDE barrier message to complete
- failed to get attributes within 15.0s ui test
- failed to get snaphots within 15.0s ui test

第二次尝试:
func setText(text: String, application: XCUIApplication) {
//Instead of typing the text, it pastes the given text.
UIPasteboard.generalPasteboard().string = text
doubleTap()
application.menuItems["Paste"].tap()
}

...

let searchField = app.textFields.elementBoundByIndex(0);
searchField.tap()
searchField.setText("Holy Grail")

结果相同。
尝试打开和关闭 Connect Hardware Keyboard
尝试过使用iPhone 6s模拟器,iPad Retina模拟器,iPad 2模拟器。
仅在Xcode 7中尝试过(8将破坏项目)

有想法吗?提前致谢!

最佳答案

对于这种情况为什么会发生,我没有任何答案,但是对于任何将来遇到我同样问题的人来说,这都是我要解决的问题。

基本思想是使键盘出现,然后敲击构建琴弦所需的每个键。

func testPlayground() {

let app = XCUIApplication()
waitAndTap(app.textFields["MyTextField"])
type(app, text: "hej")

}

func waitAndTap(elm: XCUIElement){
let exists = NSPredicate(format: "exists == true")
expectationForPredicate(exists, evaluatedWithObject: elm, handler: nil)
waitForExpectationsWithTimeout(10.0, handler: nil)
elm.tap()
}


func type(app: XCUIApplication, text : String){
//Wait for the keyboard to appear.
let k = app.keyboards;
waitForContent(k, time: 10.0)

//Capitalize the string.
var s = text.lowercaseString;
s.replaceRange(s.startIndex...s.startIndex, with: String(s[s.startIndex]).capitalizedString)

//For each char I type the corrispondant key.
var key: XCUIElement;

for i in s.characters {
if "0"..."9" ~= i || "a"..."z" ~= i || "A"..."Z" ~= i {
// Then it's alphanumeric!
key = app.keys[String(i)];
}
else {
// Then is special character and is necessary re-map them.
switch i {
case "\n":
key = app.keys["Next:"]; // This is to generalize A LOT.
default:
key = app.keys["space"];
}

}

waitAndTap(key);
}

因此: waitAndTap()是我在测试中使用很多函数。它等待元素的存在并点击它。如果十秒钟后仍未显示,请通过测试。
testPlayground()轻按我想在其中写入的文本字段,然后调用 type() type()是核心。基本上,查看字符串中的每个字符并点按它。问题:
  • 如果我在未激活shift的键盘中寻找字符H,它将永远找不到大写字母。我的解决方案是大写字符串,但是它仅在特定情况下有效。这是可增强的
  • 它不能与特殊字符一起使用,在特殊字符中您无法精确查找,只能查找键名(“space”而不是“”)。好吧,除了那个可怕的开关盒,这里没有解决方案,但是对于我需要做的事情来说,它是可行的。

  • 希望这可以帮助某人!

    关于ios - 在UI测试中填充TextField失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332258/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com