如何概括此getVisibleElement函数?

时间:2015-11-11 17:32:38

标签: javascript selenium selenium-webdriver

我正在使用selenium javascript webdriver,我想制作一个通用的'getVisibleElement'函数。我在webdriver源代码中看到了这个版本:

  var link = driver.findElement(firstVisibleLink);

  function firstVisibleLink(driver) {
    var links = driver.findElements(By.tagName('a'));
    return webdriver.promise.filter(links, function(link) {
      return links.isDisplayed();
    }).then(function(visibleLinks) {
      return visibleLinks[0];
    });
  }

有没有一种方法可以概括这一点,以便我可以传入任何css选择器作为参数,并获得它的第一个可见版本?我一直遇到'无效定位器'的问题,'未定义不是函数'错误的方式我一直在尝试。

页:

var webdriverUtils = require('../../utils/extendWebdriver_utils');
    function contactCardPage(){
        var elements = Object.create({}, {
            viewToggle: { get: function(){
                return webdriverUtils.getFirstVisibleElement('[name="viewToggle"]');
            }
        }

        this.toggleView = function(){
            return elements.viewToggle.click();
        }
    });
module.exports = new contactCardPage();

WebdriverUtils:

function webdriverUtils(){
    this.getFirstVisibleElement = function(selectorString){
        var elements = session.driver.findElements(webdriver.By.css(selectorString));

        return webdriver.promise.filter(elements, function(el) {
            return el.isDisplayed();
        }).then(function(visibleElement) {
                return visibleElement[0];
        });
    }
});
module.exports = new webdriverUtils();

规格:

var expect = require('chai').expect;
var contactCardPage = require('../../pageObjects/contactCardPage.js');
describe('Contacts', function () {
    it('Can be expanded', function(done){
        contactCardPage.toggleView().then(function(){
            //Expect here for making sure expanded elements are now displayed
            done();
        });
    });
});

目前这给我一个'无效定位器'错误。

有没有办法传入选择器并以这种方式获取可见元素?

0 个答案:

没有答案