【问题标题】:Identifying a toggle bar element text and clicking it in protractor识别切换栏元素文本并在量角器中单击它
【发布时间】:2016-04-30 04:24:53
【问题描述】:

我正在尝试单击作为切换栏一部分的文本来打开其部分。

源代码是这样的:

<h3 class="hdg hdg--3 hdg--muted">
Projects
<span class="toggleBar__toggle--icon toggleBar__icon--isOpen" data-ng-  class="{'toggleBar__icon--isOpen' : isVisible}"></span>
</h3>

代码是用 Javascript 编写的,我用它来测试量角器:

element(by.cssContainingText('h3', 'Projects')).click();

运行测试时,我收到以下错误:

No element found using locator by.cssContainingText("h3", "Projects")

可能是什么问题?

【问题讨论】:

  • 试试这个:element(by.cssContainingText('.hdg.hdg--3.hdg--muted', 'Projects')).click();
  • 不,这没用。找不到元素被抛出。

标签: javascript angularjs protractor e2e-testing


【解决方案1】:

恐怕这是需要 XPath 的情况之一:

element(by.xpath("//h3[.//text()[normalize-space(.) = 'Projects']]")).click();

或者,如果你需要点击里面的span元素:

element(by.xpath("//h3[.//text()[normalize-space(.) = 'Projects']]/span")).click();

当我在调试模式下执行时,这两个命令都有效。但是,当我正常运行它时,我收到一条错误消息,提示元素在某某点不可点击。其他一些元素接受点击.......

这意味着这是一个时间问题。添加等待:

var EC = protractor.ExpectedConditions;
var elm = element(by.xpath("//h3[.//text()[normalize-space(.) = 'Projects']]"));
browser.wait(EC.elementToBeClickable(elm), 5000);
elm.click();

【讨论】:

  • 谢谢。当我在调试模式下执行时,这两个命令都有效。但是,当我正常运行它时,我收到一条错误消息,提示元素在某某点不可点击。其他一些元素接受点击.......
  • 即使在使用了这个等待之后,我也得到了同样的错误。然后,我意识到,在调试时,我曾经手动向下滚动到页面底部,因为该元素不可见。所以,我包括了一个 browser.executeScript('window.scrollTo(0,10000);');在单击命令之前发出命令,它工作得很好。感谢您之前的查找元素的命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多