问题:
在我们相当大的测试代码库中,我们使用不同的键盘快捷键.例如,复制我们正在使用的选定文本CTRL/COMMAND + C,粘贴CTRL/COMMAND + v,打开新选项卡CTRL/COMMAND + T等.
为了使测试在多个平台上运行,我们希望根据目标浏览器运行的平台自动进行CTRLvs COMMAND选择.为了确定目标平台,我们目前正在使用以下帮助函数navigator.appVersion:
this.getControlKey = function () {
return browser.executeScript("return navigator.appVersion.indexOf('Mac');").then(function (isMac) {
return isMac ? protractor.Key.COMMAND : protractor.Key.CONTROL;
});
};
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是getControlKey()返回一个承诺,每次我们使用它时,我们必须明确地解决承诺:
helpers.getControlKey().then(function (controlKey) {
elm.sendKeys(protractor.Key.chord(controlKey, "c"));
});
Run Code Online (Sandbox Code Playgroud)
问题:
是否有可能避免嵌套并简化使用getControlKey()?理想情况下,我希望它的工作简单:
elm.sendKeys(protractor.Key.chord(helpers.getControlKey(), "c"));
Run Code Online (Sandbox Code Playgroud)是使用navigator.appVersion最好的方法来确定目标平台,还有更好的方法吗?
javascript selenium end-to-end selenium-webdriver protractor