Javascript 量角器/Jasmine测试浏览器.isElementPresent在查找类时不工作
所以我正试着用jasmine做一些测试,但我对整个事情还是比较陌生的。我花了比我愿意承认的更多的时间试图弄清楚为什么我的Web驱动程序在有机会检查Javascript 量角器/Jasmine测试浏览器.isElementPresent在查找类时不工作,javascript,selenium,jasmine,protractor,Javascript,Selenium,Jasmine,Protractor,所以我正试着用jasmine做一些测试,但我对整个事情还是比较陌生的。我花了比我愿意承认的更多的时间试图弄清楚为什么我的Web驱动程序在有机会检查'.detailsColumn'元素以获得预期结果之前关闭浏览器。过了一段时间,我发现我可以使用browser.wait使浏览器保持足够长的活动时间,以便元素准备就绪 下面是我最新的测试版本。我得到的错误是一个invalidSelectorError,没有关于抛出错误的行的信息。不过,我可以猜测,invalidSelectorError指向我的声明或使
'.detailsColumn'
元素以获得预期结果之前关闭浏览器。过了一段时间,我发现我可以使用browser.wait使浏览器保持足够长的活动时间,以便元素准备就绪
下面是我最新的测试版本。我得到的错误是一个invalidSelectorError
,没有关于抛出错误的行的信息。不过,我可以猜测,invalidSelectorError
指向我的声明或使用了detailsColumn
变量
有人知道为什么这样不行吗?我不知所措
我正在使用量角器/jasmine进行测试,并将selenium用于我的web驱动程序
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);
selenium webdriver不支持与JQuery索引相关的选择器,如 您可能想改用第n个子项
.detailsColumn.status:nth-child(1)
或者,您甚至可以将其替换为元素。all()
加上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);
谢谢你!您提出的第n个孩子建议正在运行,修改后的browser.wait看起来更漂亮。:)作为后续问题,现在当我尝试使用detailsColumn.getAttribute(“InnerHTML”);并将其记录到我的控制台,我得到[object]。getText返回getText函数的代码。难道你不知道我该怎么做吗?:)我可以提出一个全新的问题,但我会觉得我是在滥发stackoverflow…@ShaneNayler记得,在Digrator/WebDriverJ中,很多东西都是承诺。如果需要实际值,请解决它们。例如:detailsColumn.getAttribute(“InnerHTML”).then(函数(值){console.log(值);})代码>。很乐意帮忙!
var EC = protractor.ExpectedConditions;
var detailsColumn = element(by.css('.detailsColumn.status:nth-child(1)'));
browser.wait(EC.presenceOf(detailsColumn), 10000);