Protractor/Jasmine 测试 browser.isElementPresent 在寻找 class 时不起作用
Protractor/Jasmine test browser.isElementPresent not working when looking for a class
所以我正在尝试 运行 对 jasmine 进行一些测试,但我对整个事情还很陌生。我花了比我愿意承认的更多的时间来尝试弄清楚为什么我的 webdriver 在它有机会检查 '.detailsColumn'
元素以获得预期结果之前关闭浏览器。一段时间后,我发现我可以使用 browser.wait 让浏览器保持活动状态足够长的时间,以便元素准备就绪。
我最新的测试版本如下。我得到的错误是 invalidSelectorError
并且没有关于错误发生在哪一行的信息。不过,我猜测 invalidSelectorError
指向我的声明或 detailsColumn
变量的使用。
谁能看出为什么这行不通?我很茫然。
我正在使用 protractor/jasmine 进行测试,并为我的网络驱动程序使用 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);
JQuery selenium webdriver 不支持与索引相关的选择器,例如 eq()
。
您可能想改用 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);
所以我正在尝试 运行 对 jasmine 进行一些测试,但我对整个事情还很陌生。我花了比我愿意承认的更多的时间来尝试弄清楚为什么我的 webdriver 在它有机会检查 '.detailsColumn'
元素以获得预期结果之前关闭浏览器。一段时间后,我发现我可以使用 browser.wait 让浏览器保持活动状态足够长的时间,以便元素准备就绪。
我最新的测试版本如下。我得到的错误是 invalidSelectorError
并且没有关于错误发生在哪一行的信息。不过,我猜测 invalidSelectorError
指向我的声明或 detailsColumn
变量的使用。
谁能看出为什么这行不通?我很茫然。
我正在使用 protractor/jasmine 进行测试,并为我的网络驱动程序使用 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);
JQuery selenium webdriver 不支持与索引相关的选择器,例如 eq()
。
您可能想改用 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);