Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器/Jasmine测试浏览器.isElementPresent在查找类时不工作_Javascript_Selenium_Jasmine_Protractor - Fatal编程技术网

Javascript 量角器/Jasmine测试浏览器.isElementPresent在查找类时不工作

Javascript 量角器/Jasmine测试浏览器.isElementPresent在查找类时不工作,javascript,selenium,jasmine,protractor,Javascript,Selenium,Jasmine,Protractor,所以我正试着用jasmine做一些测试,但我对整个事情还是比较陌生的。我花了比我愿意承认的更多的时间试图弄清楚为什么我的Web驱动程序在有机会检查'.detailsColumn'元素以获得预期结果之前关闭浏览器。过了一段时间,我发现我可以使用browser.wait使浏览器保持足够长的活动时间,以便元素准备就绪 下面是我最新的测试版本。我得到的错误是一个invalidSelectorError,没有关于抛出错误的行的信息。不过,我可以猜测,invalidSelectorError指向我的声明或使

所以我正试着用jasmine做一些测试,但我对整个事情还是比较陌生的。我花了比我愿意承认的更多的时间试图弄清楚为什么我的Web驱动程序在有机会检查
'.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);