我打算在IE 8.0中运行现有的Selenium 1.x测试。

在检查了几篇博客并阅读了这些内容之后,我尝试使用jQuery定位器和此处提到的方法来运行测试。我的测试使用了很多基于索引的选择器,例如xpath = div[class='myclass][index]

在jQuery中,我尝试.myclass:eq(index)检索元素。但是我发现对于这些操作,jQuery比IE和Firefox中的XPath慢得多。 jQuery中是否有一种更快的方法来选择第n个元素?

评论

我没有任何指标,但我希望CSS是IE8中最快的。 jQuery具有JavaScript依赖性,IE8中的XPath也具有JavaScript依赖性(由于IE8不自然地支持XPath,因此必须通过JavaScript libraray运行)。 IE的JavaScript性能不足。

IE xpath不可靠。例如,我发现在我的测试中,当我执行By.name(“ soemName”)时会找到WebElement,而当我执行By.xpath(“ // input [@ name ='soemName']”)时找不到。在FF上都可以完美工作。

您确定名称中没有空格吗? By.xpath(“ // input [包含(@ name,'soemName')]”))有效吗?

stackoverflow.com/questions/4346479/…上的文章详细介绍了不同定位器的性能

#1 楼

没有jQuery会不会更快。

与其他现代浏览器相比,IE具有非常慢的JavaScript引擎。使用jQuery选择器意味着您正在使用JavaScript查询DOM,因此,您立即受到IE的JavaScript引擎的限制。 IE中对XPath的支持也通过JavaScript库(Google的邪恶的优秀xpath库)进行,因此XPath的速度也将很慢。

IE中最快的定位器策略是CSS,因为它的本机支持,当然有所不同IE版本对CSS的支持不同,因此在不同版本的IE中支持不同的CSS定位器。

以上所有这些使IE成为实现自动化的绝对乐趣...;)

#2 楼

我们在项目中使用以下三个不同的定位器

使用Ajaxslt库的XPath
使用Javascript库的XPath
jQuery Selector
测试是从Tellurium Issues页面创建的,包括三套

一系列测试流程,包括问题搜索和问题数据访问
类似于第一个,但没有在UI模块中进行组定位
访问问题表中的数据(限制大小为20行和10列) robotframework-seleniumlibrary

中的jQuery选择器Selenium Library 2.3引入了注册和使用自定义位置策略来在网站上定位元素的功能。新策略必须由selenium-server.jar加载。本指南将说明如何启用基于jQuery的位置策略。

http://code.google.com/p/robotframework-seleniumlibrary/wiki/jQueryElementSelectors

评论


-1:因为问题是关于不同定位器类型的性能,而您的答案与之根本无关。您的帖子如何回答这个问题?

– dzieciou
13年8月31日在15:16

#3 楼

我很早以前就对CSS,jQuery和XPath进行了一些分析,我觉得jQuery没有比CSS和XPath提供更好的结果。 CSS比XPath快一点。

评论


-1是因为答案没有任何事实或链接的支持,因此听起来像是对性能的主观感知。

– dzieciou
13年8月31日在15:15