使用Protractor获取DOM中的元素标题

时间:2016-09-20 21:14:02

标签: jasmine protractor

我正在设置页面对象以从DOM获取一些基本元素数据。

例如,在我的index.page.js页面对象中,我想访问title中的.panel-top-two > .row > h1元素,如下所示:

$('div.panels.panel-top-two > .row > h1').text()

我可以在页面对象文件中使用jQuery,还是需要坚持使用Protractor Locators?我使用Protractor有点新,所以我正在寻找一些方向。

这是我导出的示例页面对象文件。 this.getFirstPanelText是有效的函数吗? :

module.exports = function () {
    this.button = element(by.id('myButton'));
    this.message = element(by.binding('messageText'));
    this.domain = "http://localhost:64174";

    this.get = function () {
        browser.get(this.domain + '/myPage.html');
    };

  this.getFirstPanelText = function () {
        return $('div.panels.panel-top-one > .row > h1').text();
    };
    this.clickButton = function () {
        this.button.click();
    };

    this.getTitle = function () {
        return browser.getTitle();
    };

    this.getMessageText = function () {
        return this.message.getText();
    };
};

感谢您的回答。

2 个答案:

答案 0 :(得分:2)

立即回答你的问题:不,你不能使用jQuery。

现在关于this.getFirstPanelText

它部分是有效的功能,$很好,但text()不是。如果您因为看到其他Protractor问题中使用的$而要求,请注意不是jQuery 非常重要。它是Protractor的一部分,巧合的是与jQuery的元素定位器函数相同的语法。因此,不要尝试在代码中使用jQuery函数,否则会引发错误。

$()只是element(by.css())

的简写

您可以参考我的answer on another question获取有关$ usage的更长说明。

答案 1 :(得分:2)

如果您将量身定制为noGlobals,则量角器会在配置中提供true选项。您也可以使用jquery样式代码!它不应该与量角器的全局变量冲突。

但我也同意@Gunderson,并建议不要将jquery代码与量角器混淆,因为我没有看到任何理由!

exports.config = {

seleniumAddress: env.seleniumAddress,

framework: 'jasmine',

specs: [
'noGlobals/noGlobals_spec.js'
],

noGlobals: true,
};

如需参考,请查看noGlobal conf file