量角器/ Jasmine测试browser.isElementPresent在查找类时不起作用

时间:2015-09-24 00:55:02

标签: javascript selenium jasmine protractor

所以我试图用茉莉花进行一些测试,但我对整个事情都很陌生。我花了更多的时间,而不是我愿意承认为什么我的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);

1 个答案:

答案 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);