0

当使用 @ 表示法从测试函数传递到页面对象时,选择器不起作用。

这是我的主页对象。

module.exports = {

    url: function () {
        return this.api.launchUrl;
    },

    elements: {
        dropdownSelector: {
            selector: '#input-13',
            locateStrategy: 'css selector'
        },
        dropdownAuthSelector: {
            selector: '#list-item-18-5 > span > span.ml-1',
            locateStrategy: 'css selector'
        },
    },

    commands: [{

        setDropdown(selector, value) {
            let { selectDropdown } = require('../modules/Utils.js');
            selectDropdown(this.api, selector, value);
            return this;
        }

    }]

};

实用程序.js

module.exports.selectDropdown = function (self,selector,value) {

    return self.click(selector).click(value);


}

测试js文件。

module.exports = {

    '@tags': ['home'],

    'Dashboard Dropdown test'(browser) {
        const homePage = browser.page.homepage();
        homePage
            .navigate()
            //.setDropdown(homePage.elements.dropdownSelector.selector, homePage.elements.dropdownAuthSelector.selector)
            .setDropdown('@dropdownSelector', '@dropdownAuthSelector')
            .assert.urlContains('Authentication').end();
    }

};

所以基本上 setDropdown(homePage.elements.dropdownSelector.selector, homePage.elements.dropdownAuthSelector.selector)工作正常,但是当我使用@ notation 时它不起作用 .setDropdown('@dropdownSelector', '@dropdownAuthSelector')并在下面抛出错误

错误 运行 .locateMultipleElements() 协议操作时出错:无效选择器:指定了无效或非法的选择器

运行 .locateMultipleElements() 协议操作时出错:无效的选择器:指定了无效或非法的选择器

4

1 回答 1

0

由于守夜人的排队行为,我认为他们不能通过@直接访问。页面对象命令不会自动添加到主队列。另外,为什么不定义自定义命令主页页面对象,您可以在其中直接访问它们,然后在测试中调用该命令?

于 2020-02-27T18:50:30.320 回答