我试图找到位于另一个元素下的元素,并且量角器似乎无法获得正确的值。
这是一个详细的描述。
我有以下HTML:
<div ng-repeat="stageRow in stageModel" debugId="stage-row">
<div>
<span debugId="stage-name-text">{{ stageRow.name }}</span>
</div>
<div>
<span debugId="stage-count-text">{{ stageRow.count }}</span>
</div>
</div>
然后我使用以下量角器代码找到一行:
var allStages = element.all(by.css('[debugId="stage-row"]'));
var stage01 = allStages.get(0);
然后我尝试链接定位器以找到某个单元格:
var count01 = stage01.$('[debugId="stage-count-text"]');
然后我期待:
expect(count01.getText()).to.eventually.equal('1')
这就是我得到的:
+ expected - actual
+"1"
-""
即使我明显有“1”作为舞台的计数。 我知道这是因为:
我在预期之前打印了HTML:
stage01.getOuterHtml().then(function(result) {
console.log(result);
});
我看到了预期的HTML:
<div ng-repeat="stageRow in stagingModel" class="ng-scope" debugid="stage-row">
<div>
<span debugid="stage-name-text" class="ng-binding">nuziba</span>
</div>
<div>
<span debugid="stage-count-text" class="ng-binding">1</span>
</div>
</div>
在那之后,我手动尝试:
stage01.element(by.css('[debugId="stage-count-text"]')).getText().then(function(count) {
console.log(count);
});
我在打印输出中得到了“”......
然后我尝试使用不同的方法找到元素 - 使用by.repeater而不是by.css。得到了相同的结果。
这里发生了什么? 显然,HTML包含正确的标记。 为什么量角器无法正确提取?
为了记录,我正在使用量角器版本1.4.0, 跑步者是摩卡1.18.2,而不是Jasmine。
非常感谢, 丹尼尔
答案 0 :(得分:0)
你至少需要量角器1.7来使用expected conditions当前版本是2.0,所以如果你还有问题,你应该可以做这样的事情。
在这里你可以让量角器等到元素有文字&#39; 1&#39;在它,然后期望不会检查,直到满足该条件
var count01HasText = EC.textToBePresentInElement(count01, '1');
browser.wait(count01HasText, 5000,);
expect(count01.getText()).toEqual('1');