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

问题描述 投票:2回答:1

我想我在Protractor中明白了

$(selector1).$(selector2)

通常相当于:

$(selector1 selector2)

是否有理由偏爱另一个,也许是效率?我倾向于合并的第二版正在进行单一搜索,而原始版本正在进行多次搜索,这听起来效率较低。但是,当我读到CSS实际执行的方式时,扫描表达式中每个附加项的整个dom(并从“键选择器”开始从右到左),我想知道Protractor下面的代码是否使它更有效率首先执行一个简单的选择器来减少搜索空间,这取决于点缀“。$()”在附加到前一个时的工作方式。

如果比较,这个问题的答案是否会改变:

$$(multiCss).$(singleCss)

VS

$(multiCss singleCss)

如果没有涉及效率或正确性问题,一种形式被认为比另一种形式更具可读性吗?这可能倾向于基于意见的答案区域,但我要问一个或另一个是否被认为是典型的风格。如果这只是个人意见而不是规范风格的问题,那么就忘记问题的这一部分了。

selenium-webdriver css-selectors protractor
1个回答
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')没有无头时代: 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


和你一样,我希望$().$()更快,虽然在我的测试中对于非无头者来说这是真的,但不是以任何相当大的方式。无论你如何做选择器,无头时间的速度都基本相同。从这些数据中唯一有用的消除是,取决于选择器的性能的潜在差异足够小,不会产生明显的差异,并且需要在更大的范围内进行测试,以便可能开始看到明显不同的时间。当我有足够的空闲时间来设置一个适当大的测试用例时,我肯定想要了解更多内容。

© www.soinside.com 2019 - 2024. All rights reserved.