我正在使用量角器进行测试,我正在尝试使用标题标签访问HTML上的元素。问题是,当我尝试使用title标签附加到元素时(我需要一个更向下的元素来测试innerHTML),我得到了使用locator找到的&#34; No元素:By(css selector)error。< / p>
此代码通过:
browser.element.all(by.css('div[data-row="1"]')).get(0).element(by.css('div[class="widget-body"]')).
element(by.css('section[class="scrollable"]')).element(by.css('div[title="myTitle: myTitle"]'));
但是这段代码没有:
browser.element.all(by.css('div[data-row="1"]')).get(0).element(by.css('div[class="widget-body"]')).
element(by.css('section[class="scrollable"]')).element(by.css('div[title="myTitle: myTitle"]')).
element(by.css('span[class="text-I-Want ng-binding"]')).getInnerHtml();
Html元素:
<div title="myTitle: myTitle">
<header><b class="ng-binding">myTitle</b></header>
<section>
<h3><span class="text-on-hand ng-binding">myTitle</span>
</section>
</div>
数据行/ widget-body / scrollable元素是我需要访问的元素的父元素。我无法在网上找到任何告诉我为什么会这样的资源。任何人都可以帮忙吗?
答案 0 :(得分:1)
第一个代码块传递的原因是 Protractor在这种情况下实际上并不会尝试定位元素。只有当您对元素执行操作或询问某个属性或属性时,您才会触发量角器尝试定位元素。
换句话说,问题在于您找到元素的方式。
您构建的定位器链看起来不可靠,您应该调试链的哪个部分导致错误。 Put a browser.pause()
or browser.debugger()
并在shell中尝试CSS选择器。
由于我们无法重现您的问题,因此很难说清楚。