我是守夜人和javascript的新手,对于我的生活,我被困在一些奇怪的地方。我正在尝试进行一个简单的测试,只需一次点击三个不同的标签菜单项。当我运行代码时,我得到一个错误:无法找到元素:“@ Performing_AF”使用:css选择器。
如果我继续使用css选择器直接反对使用元素代码工作。有人可以指导我哪里出错了吗?
我正在测试的网址是:https://www.nypl.org/
这是 /pages/homepage.js
var elements = {
searchbutton: '.nyplHomepageApp button[name = "Search Button"]',
Authortalksconversations: '.titleTabs #tab-0',
Exibitions: '.titleTabs #tab-1',
Performing_AF: '.titleTabs #tab-2',
Other_Events: '.titleTabs #tab-3',
DonateButton: '#donateButton',
Shop: '#shopTopLink',
loadicon: '.dcom-loader',
searchboxbutton: 'button[type="submit"]',
inputsearch: '.desktopSearch-form-inputBox #desktopSearch-form-searchInput'
};
var quicksearch = {
go: function()
{
this
.waitForElementVisible('body', 6000)
.api.pause(2000)
.click('@Exibitions')
.pause(2000)
.click('@Other_Events')
.pause(2000)
.click('@Performing_AF')
}
};
module.exports = {
elements,
commands: [quicksearch]
};
这是tests / homepagetest.js
module.exports = {
'Q': function(browser) {
var goto = browser.page.homepage();
goto.go;
//browser.end();
}
}
答案 0 :(得分:0)
这对我来说很好
ul.titleTabs > li#tab-2
你的css选择器对我来说也很合适。您面临的错误是什么?
答案 1 :(得分:0)
正如我在上面的评论中提到的,如果您从测试中删除所有暂停,它将起作用。我不确定背后的原因。最好尽可能使用waitForElementVisible
或waitForElementPresent
。 pause()
会使您的测试变得不稳定且不可靠。
您使用这些的方式是
如果您真的想要保持暂停状态,可以通过在go
函数顶部添加一些变量并使用这些变量而不是@someElement
语法来使其工作。
go: function() {
var exibitions = this.elements.Exibitions.selector;
var otherEvents = this.elements.Other_Events.selector;
var performingAf = this.elements.Performing_AF.selector;
this
.waitForElementVisible('body', 6000)
.api.pause(2000)
.click(exibitions)
.pause(2000)
.click(otherEvents)
.pause(2000)
.click(performingAf)
}