量角器链接选择器与非链接选择器

时间:2019-03-25 16:09:19

标签: selenium-webdriver css-selectors protractor

我想我在量角器中了解

$(selector1).$(selector2)

通常等效于:

$(selector1 selector2)

有没有理由更喜欢一个,也许是效率?我倾向于将合并的第二个版本进行一次搜索,而原始版本进行多次搜索,这听起来效率较低。但是,当我了解CSS的实际性能,扫描表达式中每个附加术语的整个dom(并从“键选择器”开始从右到左执行)时,我想知道Protractor下方的代码是否使其效率更高首先执行一个简单的选择器以减少搜索空间,具体取决于加到上一个“。$()”后的虚线。

如果进行比较,该问题的答案是否会改变

$$(multiCss).$(singleCss)

vs

$(multiCss singleCss)

如果不涉及效率或正确性问题,是否认为一种形式比另一种形式更具可读性?这种可能倾向于基于观点的答案,但是我问一个或另一个是否被视为规范风格。如果只是个人意见而不是规范风格的问题,那么请忽略此部分问题。

1 个答案:

答案 0 :(得分:2)

我发现这非常有趣。请注意,这是没有规范的答案
这只是我针对该主题进行的一些测试收集的数据。当我有几个小时可以用来正确设置一个干净的测试环境时,我可能会进行进一步的测试,但这是我现在有时间要做的全部事情。

为进行测试,我导航到一个页面,然后在10个单独的元素上运行Expect()以验证其文本。这是本地托管的,因此互联网速度并不重要。我选择了$().$()之类的元素进行了5次测试,然后又选择了$('CSS CSS')之类的5次测试。然后,我在无头模式下重复测试,以查看是否会得到不同的结果。


$()。$()无头无尾:
1)16.062
2)16.297
3)15.029
4)15.773
5)16.699
平均:15.972


$()。$()无头时代:
1)14.705
2)15.081
3)15.806
4)14.944
5)14.997
平均:15.107


$('CSS CSS')No Headless Times:
1)16.172
2)15.556
3)16.604
4)16.706
5)15.733
平均:16.154


$(CSS CSS)无头时代:
1)15.288
2)15.136
3)15.11
4)15.152
5)14.805
平均:15.098


像您一样,我希望$().$()会更快,尽管对于我的测试中没有头脑的人来说,这是正确的,但绝不是什么好办法。无论您如何选择,无头时间的运行速度基本相同。从该数据得出的唯一有用的信息是,取决于选择器的性能潜在差异很小,不会引起明显差异,因此需要进行更大范围的测试,以开始看到明显不同的时间。可以肯定的是,当我有足够的空闲时间来设置适当的大型测试用例时,我想进一步研究一下。