【问题标题】:Sending Ctrl+A combination to an element向元素发送 Ctrl+A 组合
【发布时间】:2019-08-22 06:09:30
【问题描述】:

我正在使用 protractor 进行角度端到端测试,也就是 e2e 测试。

为了向元素发送键,我使用:

element(by.model('myModel')).sendKeys('Test');

如何发送组合键,例如Ctrl+A


我在 github 上搜索了protractor source code,但没有找到相关示例。

【问题讨论】:

标签: javascript angularjs selenium-webdriver protractor


【解决方案1】:

在 Linux 和 Windows 中完全可以,但 not in OSX

var elm = element(by.model('myModel'));
elm.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "a"));

还有一个非元素变体:

browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('a').perform();

【讨论】:

  • 是的,我在发布问题后正在尝试protractor.Key.COMMAND(在 Mac 上) - 无法使其工作。感谢您的回答和链接。
  • 小心使用非元素变体,因为它会在以后的测试中保持按下 CONTROL 键。所以在执行之前keyUp CONTROL。
【解决方案2】:

如果您使用protractor-hotkeys,您可以使用简单的热键字符串(如来自角热键的那些)在量角器测试中触发它们。

所以,这将变成:

var hotkeys = require('protractor-hotkeys');
hotkeys.trigger('ctrl+a', { targetElement: element(by.model('myModel')) });

【讨论】:

  • 哦,哇,这主意真棒!感谢您实现它 - 一定会将它添加到工具包中。
  • protractor-hotkeys 会隐式处理 windows vs mac 上的 ctrl vs 命令吗? (参考this
  • 我决定暂时不解决这个问题——在我目前的情况下测试太难了。我只测试了我确信可以跨平台工作的most basic stuff。如果你能give me some feedback on how it works,我将不胜感激。
  • 酷!如果您决定解决 Mac 与非 osx 问题,请告诉我们,即使是 warn.log 也会有所帮助,因此至少我们知道某些东西不会以相同的方式跨平台工作;)
【解决方案3】:

似乎是一个旧帖子。但只是分享一个解决方案对我有用,可以在 MAC 中使用量角器清除 Tinymce 编辑器的内容。

var body_editor = element(by.id('tinymce'));/*id of body inside iframe*/
body_editor.click().sendKeys(protractor.Key.chord(protractor.Key.COMMAND, "a"));
body_editor.click().sendKeys(protractor.Key.BACK_SPACE);

【讨论】:

  • 嘿@user2895098 你用的是什么版本的量角器/硒?
  • 你在@nwinkler 上是什么版本?
  • 在 Chrome、Mac OS X 10.10.2 上使用 Protractor 1.8.0 对其进行了测试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多