我正在设置页面对象以从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();
};
};
感谢您的回答。
答案 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