小编Xot*_*bu4的帖子

如何从WebdriverIO中继承WebElement

我正在寻找一种方法来继承webdriverio返回的WebElement对象,没有猴子修补和TS类型支持(自动完成是必须的).有没有办法做这样的事情?

class Checkbox extends WebdriverIOWebElement {
    constructor() {
       super($('div'))
    }
    // overriding base method
    isDisplayed(): boolean {
        // blabla some new logic here
    }

    check() {
        if(!this.isChecked()) {
            this.click()
        }
    }

    uncheck() {
        if(this.isChecked()) {
            this.click()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript webdriver selenium-webdriver typescript webdriver-io

11
推荐指数
1
解决办法
412
查看次数

Protractor的隐式等待如何与显式等待交互?

当隐式等待小于显式时会发生误解:

var timeOut = 5000;
var search = element(by.xpath(`//*[@name='qwer']`));
browser.manage().timeouts().implicitlyWait(4000);
browser.ignoreSynchronization = true;

describe('Protractor Test', function () {
    beforeEach(function () {
        browser.get('https://www.google.com.ua');
    });
    it('EC', function () {
        console.log('START');
        // browser.sleep(timeOut);
        browser.wait(protractor.ExpectedConditions.presenceOf(search), timeOut);
    });
});
Run Code Online (Sandbox Code Playgroud)

总时间:8.613秒.隐式设置等待第二个低位:3000,结果为6.865秒.它是如何在引擎盖下工作的?非常感谢提前!

javascript selenium webdriver wait protractor

8
推荐指数
1
解决办法
7015
查看次数

如何在ProtractorJS中扩展ElementFinder对象?

在使用protractorJS进行一些实验时,我注意到没有简单的方法可以从Protractor扩展(继承)ElementFinder对象以添加自己的功能。

例如,我要创建对象Checkbox,该对象将具有其他方法-check()-应根据isSelected()的结果切换复选框。

我想出了代码-

var ElementFinder = require('protractor/lib/element.js').ElementFinder;
var ElementArrayFinder = require('protractor/lib/element.js').ElementArrayFinder;

class CheckBox extends ElementFinder {
    constructor(loc) {
      var getWebElements = function () {
        var ptor = browser;
        var locator = loc;
        return ptor.waitForAngular().then(function() {
          if (locator.findElementsOverride) {
            return locator.findElementsOverride(ptor.driver, null, ptor.rootEl);
          } else {
            return ptor.driver.findElements(locator);
          }
        });
      }
  var ArrayFinderFull = new ElementArrayFinder(browser, getWebElements, loc);
  super(browser, ArrayFinderFull);
}

    check() {
    return this.isSelected().then(selected => selected? this.click() : null)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是getWebElements是从protractor / element.js复制粘贴-https: //github.com/angular/protractor/blob/3.1.0/lib/element.js#L131

这种复制粘贴使我沮丧。我认为应该有更适当的方法来扩展ElementFinder。

有人在protractorJS中继承了ElementFinder吗?

javascript angularjs protractor

5
推荐指数
2
解决办法
1217
查看次数