如何在量角器测试用例中模拟“Control + Space”?

Posted

技术标签:

【中文标题】如何在量角器测试用例中模拟“Control + Space”?【英文标题】:How to simulate "Control + Space" in protractor test cases? 【发布时间】:2021-07-05 23:49:35 【问题描述】:

我们的项目中有一个场景 - 有一个文本区域,如果我们在其中单击“ctrl + 空格”,则会出现一个可见的列表/下拉列表。现在我想用我的量角器测试用例来模拟这种行为。

请在下面找到代码:

await letterBody.sendKeys(lettertestdata.LetterTemplate.letterBodyText); // to enter "this is automated test text"
await letterBody.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, protractor.Key.SPACE));
        

第二行代码 sn-p 不起作用。它输入一个空格(空格字符)而不是 ctrl+space 行为。虽然 如果我写 await letterBody.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "a")) ,它会选择整个文本。

基本上 ctrl + A 有效,但 ctrl + space 无效。

有人可以帮忙解决一下吗。

附:我已经尝试了使用“”而不是 Key.Space 或使用 keydown 和 Control 然后 sendKeys 和 SPACE 和“”等的所有组合。

【问题讨论】:

【参考方案1】:

似乎 Protractor 只是发送带有 Key.SPACE 的文字空格字符。 尝试使用element.sendKeys("\uE00D") 的Unicode for the SPACE key 仍然无法正常工作。

我建议你尝试在元素上执行一个javascript事件dispatchEvent

E.x:

    const ctrlSpace = 
       `var input = document.querySelector("input#'letter body']");                       

        input.dispatchEvent(new KeyboardEvent("keydown", key: "", ctrlKey: true));
        input.dispatchEvent(new KeyboardEvent("keyup", key: "", ctrlKey: true));`

    await browser.executeScript(ctrlSpace);

这可能看起来“老套”,但我认为没有其他方法可以解决您的问题。

【讨论】:

以上是关于如何在量角器测试用例中模拟“Control + Space”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在go中模拟测试用例中结构的方法调用

在单元测试用例中模拟 Angular $window

在 Laravel 测试用例中模拟一个 http 请求并解析路由参数

是否可以在 IOS 的 XCTest 单元测试用例中模拟方法(带参数)调用

如何在 iOS Xcode UI 测试用例中启动系统应用

如何在单元测试中模拟缺乏网络连接