如何在量角器测试用例中模拟“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”?的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 测试用例中模拟一个 http 请求并解析路由参数