gpt4 book ai didi

javascript - 在端到端测试中使用跨平台键盘快捷键

转载 作者:可可西里 更新时间:2023-11-01 02:44:39 26 4
gpt4 key购买 nike

问题:

在我们相当大的测试代码库中,我们使用不同的键盘快捷键。例如,要复制选定的文本,我们使用 CTRL/COMMAND + C,粘贴 CTRL/COMMAND + v,打开新标签页 CTRL/COMMAND + T

为了在多个平台上进行测试,我们希望根据目标浏览器运行的平台自动选择 CTRLCOMMAND 。为了确定目标平台,我们目前正在使用以下使用 navigator.appVersion 的辅助函数:

this.getControlKey = function () {
return browser.executeScript("return navigator.appVersion.indexOf('Mac');").then(function (isMac) {
return isMac ? protractor.Key.COMMAND : protractor.Key.CONTROL;
});
};

这种方法的问题是 getControlKey() 返回一个 promise ,每次我们使用它时,我们都必须显式地解决这个 promise :

helpers.getControlKey().then(function (controlKey) {
elm.sendKeys(protractor.Key.chord(controlKey, "c"));
});

问题:

  1. 是否可以避免嵌套并简化getControlKey()的使用?理想情况下,我希望它能像这样简单地工作:

    elm.sendKeys(protractor.Key.chord(helpers.getControlKey(), "c"));
  2. 使用 navigator.appVersion 是确定目标平台的最佳方法吗?是否有更好的方法?

最佳答案

对于这两种情况,这是我最好的回答你的第一个问题 -

  • 如果多个测试人员在他们自己的机器上运行脚本,可以将辅助方法放在 onPrepare() 函数中,将值分配给一个常量全局变量,该变量对所有人都可用测试。

  • 如果所有测试都在分布式平台上运行,其中所有测试都随机分配到不同的机器,在这种情况下,编写辅助方法将值分配给 beforeAll( ) 函数会有用。

转到您的第二个问题,还有另一种方法可以让我们使用 Protractor 的 getCapabilities() 获取正在执行测试规范的平台。方法。

获取平台类型的代码-

//Below code can be placed either in `onPrepare()` function or `beforeAll()` function depending the need.
//If the below code is placed in the `beforeAll()` function then i guess there won't be any need for a global variable.

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")); //if its stored as global variable

希望对您有所帮助。

关于javascript - 在端到端测试中使用跨平台键盘快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com