当前位置: 首页 > 面试题库 >

UI测试删除文本字段中的文本

柳业
2023-03-14
问题内容

在我的测试中,我有一个带有预先存在的文本的文本字段。我想删除内容并输入新字符串。

let textField = app.textFields
textField.tap()
// delete "Old value"
textField.typeText("New value")

用硬件键盘删除字符串时,录音对我来说什么都没有产生。用软件键盘做完同样的事情后,我得到了:

let key = app.keys["Usuń"] // Polish name for the key
key.tap()
key.tap() 
... // x times

要么

app.keys["Usuń"].pressForDuration(1.5)

我担心自己的测试取决于语言,因此我为受支持的语言创建了以下内容:

extension XCUIElementQuery {
    var deleteKey: XCUIElement {
        get {
            // Polish name for the key
            if self["Usuń"].exists {
                return self["Usuń"]
            } else {
                return self["Delete"]
            }
        }
    }
}

在代码中看起来更好:

app.keys.deleteKey.pressForDuration(1.5)

但是非常脆弱。从模拟器退出后,Toggle software keyboard被重置,并且我的测试失败。我的解决方案不适用于CI测试。如何解决这个问题才更普遍?


问题答案:

我写了一个扩展方法来为我做这件事,它非常快:

extension XCUIElement {
    /**
     Removes any current text in the field before typing in the new value
     - Parameter text: the text to enter into the field
     */
    func clearAndEnterText(text: String) {
        guard let stringValue = self.value as? String else {
            XCTFail("Tried to clear and enter text into a non string value")
            return
        }

        self.tap()

        let deleteString = String(repeating: XCUIKeyboardKey.delete.rawValue, count: stringValue.count)

        self.typeText(deleteString)
        self.typeText(text)
    }
}

然后可以很容易地使用它:
app.textFields["Email"].clearAndEnterText("newemail@domain.com")



 类似资料:
  • 有没有一种方法可以完全删除TextField的边框?例如,我想显示该文本中的文本:

  • 我目前正在尝试构建一个行为类似于命令shell的应用程序。我想显示我给它的路径(或' 我这样做是为了在用户提交文本时文本字段会被清空。提交后,它将字段的文本设置为我的路径,以达到类似的效果,但用户仍然可以在输入文本时删除该路径。 如何使我的路径文本显示在字段中,但用户无法删除它? 我已经尝试过这个,但它只在提交后更新插入符号位置:

  • 问题内容: 我需要在所有索引到Elasticsearch的文档中删除一个字段。我该怎么做。任何删除查询都可以帮助我实现这一点。 问题答案: @backtrack所说的是对的,但是在Elasticsearch中有一种非常方便的方法。Elasticsearch将抽象出删除的内部复杂性。您需要使用更新API来实现- 您可以在此处找到更多文档。 注意:从Elastic Search 6开始,您需要包括一个

  • 问题内容: 我在使用iOS SDK 8的Swift时遇到一个问题 我使用了回调来获取数据背景,并且在获取数据时,我想设置一个文本字段值并更新屏幕。 这是我的代码: 运行此代码,将正确获取数据并且txtTest没有更新,但是当我点击txtTest时,将显示该值。那么有什么方法可以强制更新UI?或向UI线程发送消息? 问题答案: 每个人都想在Swift中进行UI更新时遇到的同一问题:永远不要在任何辅助

  • $format = new \Vtiful\Kernel\Format($fileHandle); $style = $format->strikeout()->toResource();

  • 问题内容: 我有一个像这样的textfile.txt: 如何删除最舒适的前三行和最后一行? 问题答案: