所以我试图用茉莉花进行一些测试,但我对整个事情都很陌生。我花了更多的时间,而不是我愿意承认为什么我的webdriver在关闭浏览器之前有机会检查'.detailsColumn'
元素以获得预期结果。过了一会儿,我发现我可以使用browser.wait让浏览器保持活动足够长的时间让元素准备就绪。
我的最新版测试如下。我得到的错误是invalidSelectorError
,并且没有关于错误投放到哪一行的信息。我猜测invalidSelectorError
指向我的声明或使用detailsColumn
变量。
谁能明白为什么这不起作用?我很茫然。
我正在使用量角器/茉莉花进行测试,并使用selenium作为我的网络驱动程序。
it('Should display result summary correctly when searching for multiple articles only', function () {
var TrackID= ExpectedArticle1Details.TrackingID + ', ' + ExpectedArticle2Details.TrackingID;
landingPage.get();
landingPage.setTrackID(TrackID)
landingPage.clickTrackButton();
expect(resultPage.allElementsofLandingPageAreVisible()).toEqual(true);
expect(resultPage.allHeadersofResultsPageAreVisible()).toEqual(true);
browser.wait(function () {
var detailsColumn = protractor.By.css('.detailsColumn.status:eq(0)');
return browser.isElementPresent(detailsColumn).then(function (result) {
expect(result).toBe(true);
return result;
console.log(result);
});
}, 10000);
答案 0 :(得分:2)
selenium webdriver不支持eq()
等与JQuery索引相关的选择器。
您可能希望改为使用nth-child
:
.detailsColumn.status:nth-child(1)
或者,您甚至可以将其替换为element.all()
加first()
:
element.all(by.css(".detailsColumn.status")).first();
此外,如果您必须使用browser.wait()
,我认为您可以替换目前拥有的整个browser.wait()
块:
var EC = protractor.ExpectedConditions;
var detailsColumn = element(by.css('.detailsColumn.status:nth-child(1)'));
browser.wait(EC.presenceOf(detailsColumn), 10000);