Typescript 如何使用量角器和chai从嵌套html中定位此按钮

Typescript 如何使用量角器和chai从嵌套html中定位此按钮,typescript,mocha.js,chai,angularjs-e2e,gulp-protractor,Typescript,Mocha.js,Chai,Angularjs E2e,Gulp Protractor,嗨,我正在用量角器、柴和摩卡做一些e2e测试。语言是打字稿。我对这些东西很陌生。我被困在寻找一个元素上好几个小时了。如何从一堆嵌套的HTML中找到按钮“Edit ValueChart”,如下所示: <div id="ValueChartView"> <input type="color" id="primitiveObjective-color-picker"> <div class="valuechart-toolbar"> <form cla

嗨,我正在用量角器、柴和摩卡做一些e2e测试。语言是打字稿。我对这些东西很陌生。我被困在寻找一个元素上好几个小时了。如何从一堆嵌套的HTML中找到按钮“Edit ValueChart”,如下所示:

<div id="ValueChartView">
<input type="color" id="primitiveObjective-color-picker">
<div class="valuechart-toolbar">
    <form class="form-inline col-xs-12">
        <div class="form-group valuechart-toolbar-group pull-left">
            <a class="btn btn-default" *ngIf="enableManagement()" [routerLink]="['/createValueChart/editChart/BasicInfo']">
            Edit ValueChart
            </a>
        </div>


还有一些其他的,但都不起作用。始终获取错误“未找到此类元素”。有时我会遇到错误“断言错误:预期true为false”,在这种情况下,我怀疑我没有找到正确的元素。有人能帮我找到元素吗?此外,我在template.html文件中找到了上述源代码,这与我在网页上查看时看到的代码有点不同。为什么呢?非常感谢你

你试过了吗?我试过了。没用。可能是定位器以外的错误吗?可能尝试
元素(by.css('#ValueChartView form a.btn-default'))
。还有,为什么不把你的两个建议结合起来呢?啊,安南,在结合了你的两个建议之后,它似乎起到了作用,而不是
isDisplayed()
!非常感谢你!你介意解释一下你选择定位器的逻辑吗?正如你所问,我认为当
isPresent()
为假时,
isDisplayed()
为假,或者
isPresent()
为真,但
isVisible()
为假。因此,我认为当您不确定
isPresent()
时,
isDisplayed()
更容易出错。但这似乎是错误的?@vw511不客气:)元素可以存在,但不能显示(isVisible是isDisplayed的旧版本,使用不同的方法来确定可见性)。iPresent将告诉您元素是否在页面上(隐藏或不隐藏)。我的定位器比查找带有文本的按钮要具体得多(可以有另一个带有相同文本的按钮,您将始终指向在本例中找到的第一个按钮)。
var editValueChartBtn = p.browser.element(p.by.css('.form-group.valuechart-toolbar-group.pull-left .btn.btn-default'));

// The button should not appear on the page
expect(editValueChartBtn.isDisplayed()).to.eventually.be.false;
var editValueChartBtn = p.browser.element(p.by.cssContainingText('#ValueChartView','Edit ValueChart')); 

// The button should not appear on the page
expect(editValueChartBtn.isDisplayed()).to.eventually.be.false;