9

量角器1.7.0引入了一项新功能:一种新的定位器by.deepCss,它有助于查找shadow DOM中的元素。查找阴影中的元素DOM

它涵盖哪些用例?您何时想要到达影子DOM中的元素?


我之所以问这个问题是我缺少对问题的动机的一部分 - 我想过量角器主要是作为一个高层次的框架,有助于模拟真实用户的互动。访问阴影树听起来像是一个非常深的技术性的东西,你为什么要这样做会让我感到困惑。

+0

我会编辑标题以匹配问题的上下文,但我不确定用例在Protractor/WebDriver和一般用途之间是否会有所不同。 – BoltClock 2015-02-23 21:40:56

+0

@BoltClock是的,我同意,好点。如果你有更好的标题,请编辑。此外,可能是用'selenium'标记是有道理的。 – alecxe 2015-02-23 21:42:24

+0

我不打算添加这个作为答案,因为有人可能有更好的说法,但问题是为什么量角器有这么多的定位策略。本质上,开发人员可能想要验证shadowdom中的元素,因为它是UI显示的一部分。 – hankduan 2015-02-24 08:48:46

回答

5

要回答你的问题,这里有一个相关的问题:“影子dom提供的是什么信息,看原始html不?

下面的代码片断创建(通过Chrome或Firefox浏览视图)一个shadom DOM:

<input type="date">

如果单击箭头,弹出所有的日期打开,你可以选择它。

现在想象你正在建造一个酒店预订应用程序,并且你制作了一个自定义的阴影日期选择器,当房间不可用时它会停止(并且不允许用户选择)日期。

查看原始html,您会看到<input type="date">以及用户选择的值/日期。但是,如何测试黑屏UI是否按预期工作?为此,您需要检查弹出窗口所在的影子dom。

+0

好的例子,现在我看到它对我来说更具有意义和实用价值。谢谢! – alecxe 2015-03-07 01:15:54

+0

你还可以看看这个线程:[访问阴影DOM中的元素](http://stackoverflow.com/questions/28911799/accessing-elements-in-the-shadow-dom)?看起来,我们不能访问原生HTML5元素的阴影DOM ..这是真的吗?谢谢。 – alecxe 2015-03-12 23:25:34

+1

我还没有尝试过,但如果html5原生影子doms被隐藏,我不会感到惊讶。这个选择器的目的一直是测试自定义创建的阴影dom。 – hankduan 2015-03-13 18:44:21

1

我之所以问这个问题是我缺少对问题的动机的一部分 - 我想过量角器主要是作为一个高层次的框架,有助于模拟真实用户的互动。访问阴影树听起来像是一个非常深的技术性的东西,你为什么要这样做会让我感到困惑。

在此website中看起来并不如此,它显示了对阴影DOM的介绍。它说:

Shadow DOM将内容从演示文稿中分离出来,从而消除了命名冲突并改善了代码表达。

影子DOM主要有助于分离内容,以避免命名冲突和改善你的代码表达,使它更整洁,更好(我假设)。我很抱歉地说,我实际上并没有使用Selenium,所以这里有一个网站有更多的信息:http://webcomponents.org/polyfills/shadow-dom/

我希望这可以帮助你!

+0

谢谢你的链接。我认为我越来越接近理解什么是影子管理器,但问题仍然存在:如果某人在影子DOM中隐藏了实现细节,为什么我们希望在端到端的浏览器测试中访问它?..这是关于它背后的动机和一个真实世界的例子.. – alecxe 2015-03-06 15:28:10