Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在量角器中添加新元素函数_Javascript_Selenium_Automated Tests_Protractor - Fatal编程技术网

Javascript 如何在量角器中添加新元素函数

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

我们正在使用量角器/selenium来驱动测试-我真的想替换某些功能-比如sendkeys和click,这样我可以记录控制台发生的情况,但是b使它们更可靠我们发现click在10%的时间内随机失败,所以要将其放入重试循环中

是否有一个明显的原型存在于某个地方,或者其他一些我可以添加函数的对象?我特别想替换现有的函数,但也想添加其他助手,并像这样调用它们

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”

我们的车手很大,但随着时间的推移,车手越来越大