【问题标题】:How can I use copy and paste with protractor on MAC with Chrome?如何在带有 Chrome 的 MAC 上使用量角器复制和粘贴?
【发布时间】:2018-09-29 03:52:57
【问题描述】:

如何在带有 Chrome 的 MAC 上使用量角器复制和粘贴?

newInput.sendKeys(protractor.Key.chord(browser.controlKey, "a"));
newInput.sendKeys(protractor.Key.chord(browser.controlKey, "c"));
newInput.sendKeys(protractor.Key.chord(browser.controlKey, "v"));

当我使用此代码时,我有“未定义”

我使用这篇文章 Using cross-platform keyboard shortcuts in end-to-end testing 中的这段代码,但它不起作用:

browser.controlKey = protractor.Key.CONTROL; //browser.controlKey is     a global variable and can be accessed anywhere in the test specs
browser.getCapabilities().then(function(capabilities){
    if(capabilities.caps_.platform === "MAC")
        browser.controlKey = protractor.Key.COMMAND;
});

elm.sendKeys(protractor.Key.chord(browser.controlKey, "c"));

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/33263091/…
  • 你想sendKeys()到什么浏览器? selenium webdriver 存在问题,无法在 mac 平台上sendKeys()
  • 我的浏览器是“Chrome”

标签: javascript angularjs protractor


【解决方案1】:

这是known chromedriver problem。不幸的是,从 Protractor/WebDriverJS 发送键盘快捷键在 Chrome+Mac 上不起作用。

在我们的项目中,我们已将所有涉及使用键盘快捷键的测试移至 Firefox:

var firefox_only_specs = [
    "../specs/sometest1.spec.js",
    "../specs/sometest2.spec.js"
];

exports.config = {
    multiCapabilities: [
        {
            browserName: "chrome",
            chromeOptions: {
                args: ["incognito", "disable-extensions", "start-maximized"]
            },
            specs: [
                "../specs/*.spec.js"
            ],
            exclude: firefox_only_specs
        },
        {
            browserName: "firefox",
            specs: firefox_only_specs
        }
    ],

    // ...
}

【讨论】:

  • 我可以在 selenium 上更改我的驱动程序吗?
  • @JérémieChazelle 只是不使用 Chrome 进行此类测试(好吧,或者在远程 selenium 服务器上的 Windows 上运行它们,例如 BrowserStack)。
  • 当我读到这篇文章时的感觉,我知道我正在测试的项目在 Firefox 上不起作用:C
【解决方案2】:

protractor.Key.COMMAND 已被标记为 MAC 的 wontfix in Protractor's github。这是我改编自keyboard commands for left-handed users的解决方案

适用于 MAC、LINUX 和 WINDOWS 的通用复制+粘贴替代方案:

// This does a select all
element1.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, protractor.Key.SHIFT, protractor.Key.HOME));

 // This copies the text
element1.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, protractor.Key.INSERT));

// This pastes it in another element
element2.sendKeys(protractor.Key.chord(protractor.Key.SHIFT, protractor.Key.INSERT));

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2011-10-31
    • 2016-12-26
    • 2023-01-20
    相关资源
    最近更新 更多