我正在慢速机器上运行量角器,我需要量角器来减慢每个按键和每个动作的速度。动作部分已经完成,但是我该怎么做keyPress部分呢?
我的本地解决方案是:
function delay(el, value, newDelay) {
for (var i = 0; i < value.length; i++) {
browser.sleep(newDelay || browser.params.delay);
el.sendKeys(value[i]);
}
}
在onPrepare中,我可以使用以下命令来减慢每个动作的速度:
browser.driver.controlFlow().execute = function () {
var args = arguments;
if (arguments[1] === "WebElement.sendKeys()")
debugger;
origFn.call(browser.driver.controlFlow(), function () {
return protractor.promise.delayed(100);
});
return origFn.apply(browser.driver.controlFlow(), args);
};
但是我不知道如何降低sendKeys的速度,我相信我必须在放置调试器的地方做些什么,但是呢?
答案 0 :(得分:1)
Aparenty,我发现的唯一解决方案是首先尝试发送整个字符串,如果失败,则一个个地发送密钥,然后再次检查,所以我的代码是这样的:
el.getAttribute('value').then(function (insertedValue) {
if (insertedValue !== value) {
el.clear().then(function () {
el.sendKeys(protractor.Key.END);
for (var i = 0; i < value.length; i++) {
browser.sleep(100);
el.sendKeys(value[i]);
el.sendKeys(protractor.Key.END);
}
if (tryNo < 1) {
el.getAttribute('value').then(function (insertedValue) {
if (insertedValue !== value) {
.......................
}
});
}
});
}
});