【发布时间】:2015-12-28 20:05:15
【问题描述】:
出于开发和调试目的,最好知道我在以下方法中询问的完整 CSS 链是什么:
divElm.element(by.css("article")).element(by.css("tbody > tr")).then(function(elm) {
// is there a way to know here what is the "CSS chain" of 'elm'?
});
如果我调试elm,我会看到locator 属性:
locator_: { using: 'css selector', value: 'tbody > tr' },
但这只是链中最后一个元素的定位器。
拥有所有这些真的很有用,例如:divElm, article, tbody > tr 这样我就可以在页面上手动调试它以查看该元素是否真的存在。
更新:我真正需要的是,当量角器选择器期望失败(例如使用 isPresent() 方法)时,我得到的错误只显示 链中的最后一个 选择器。如果显示整个链条,那将非常方便。
【问题讨论】:
-
我不认为这是可能的,因为获取父元素也可以通过其他方式实现。甚至 Selenium 也没有包含这种方法 - here's a link of that。但是,您可以使用 xpath 来获取父元素。 Here's how
-
您希望在 Protractor 中使用的确切值到达元素或 HTML 文档的完整 DOM 路径?
-
抱歉,问题可能令人困惑。我希望我在 Protractor 中使用的确切选择器/值能够到达元素,而不是完整的 DOM 路径。
-
当它在那里声明时你为什么需要它: element(by.css("article")).element(by.css("tbody > tr")) ?
-
嗯,你明白了。这是一个简化的例子。如果您实现了类似 PageObjects 概念的东西,或者您有更复杂的分层对象关系(ej:Page > section > header),那么您可能会浪费一些时间来尝试了解完整的量角器选择器是什么。我能够发现完整的链,但如果我的选择器有很多父母,则需要一些时间。我在失败的期望中得到的唯一错误仅与链中的 LAST 选择器有关。
标签: javascript angularjs css-selectors protractor