Javascript 如何在量角器中添加新元素函数
我们正在使用量角器/selenium来驱动测试-我真的想替换某些功能-比如sendkeys和click,这样我可以记录控制台发生的情况,但是b使它们更可靠我们发现click在10%的时间内随机失败,所以要将其放入重试循环中 是否有一个明显的原型存在于某个地方,或者其他一些我可以添加函数的对象?我特别想替换现有的函数,但也想添加其他助手,并像这样调用它们Javascript 如何在量角器中添加新元素函数,javascript,selenium,automated-tests,protractor,Javascript,Selenium,Automated Tests,Protractor,我们正在使用量角器/selenium来驱动测试-我真的想替换某些功能-比如sendkeys和click,这样我可以记录控制台发生的情况,但是b使它们更可靠我们发现click在10%的时间内随机失败,所以要将其放入重试循环中 是否有一个明显的原型存在于某个地方,或者其他一些我可以添加函数的对象?我特别想替换现有的函数,但也想添加其他助手,并像这样调用它们 element(By.Css("blah")).someHelper() 比以前干净多了 someHelper(element( By.Css
element(By.Css("blah")).someHelper()
比以前干净多了
someHelper(element( By.Css("blah"))
您根本不需要更改量角器,而是在量角器周围编写一个包装器,并在测试中使用它 例如,每当我们想要单击一个元素时,我们都不会使用.click函数,甚至不会查找该元素。我们使用包装器并调用clickElement
resolveSelector: function (selector) {
var el;
if (typeof selector === 'string') {
el = self.getElement(selector);
} else {
el = selector;
}
return el;
},
getElement: function (selector) {
verbose('getElement: ' + selector);
return element(by.css(selector));
},
waitForElement: function (selector) {
verbose('waitForElement: ' + selector);
var el = self.resolveSelector(selector);
return self.wait(function () {
return self.executeScript(function (el) {
return el ? $(el).is(':visible') : false;
}, el.getWebElement()).then(function (val) {
return val;
});
}, 15000, 'Element is not visible. (' + selector + ')');
},
waitForElementClickable: function (selector) {
verbose('waitForElementClickable: ' + selector);
var el = self.resolveSelector(selector);
var condition = function () {
return self.waitForElement(el).then(function () {
return self.isElementEnabled(el);
});
};
return self.wait(condition, 15000, 'Element not clickable. (' + selector + ')');
},
clickElement: function (selector) {
verbose('clickElement: ' + selector);
var el = self.resolveSelector(selector);
return self.waitForElementClickable(el).then(function () {
return el.click();
});
},
您可以看到我们的clickElement函数做了一些工作,verbose是一个函数,如果配置选项设置为true,它只调用console.log
如果您希望您的测试是可靠的,并且能够进行调整,那么您必须编写一个驱动程序并使用它,而不是在测试中直接使用量角器。当一个selenium云服务运行您的测试时,尤其如此
所以在我们的测试中,我们调用driver.clickElement'someID';或驱动程序。单击元素“.someClass”
我们的车手很大,但随着时间的推移,车手越来越大