在java中检测seleniumRC的网页元素的最佳方法

使用SeleniumRC使用Java检测网页上的元素以进行自动测试的最佳方法是什么? 我知道有XPath元素和CSS元素,但哪一个最好?

谢谢! 尼廷

在我看来,最准确的方法是XPath,因为你可以使用XPath来描述DOM中元素的确切位置,但是在某些情况下CSS定位器比XPath更好。

使用selenium的ID定位器是最简单的,但除非您要查找的元素具有ID并不总是有用。

使用XPath时最大的负面因素是Selenium RC和浏览器性能不佳的JavaScript渲染引擎(Think IE6 / IE7)。 相当多的工作已经圆顶尝试并纠正这一点,所以如果你使用格式良好的XPath,只搜索DOM的特定部分,这个问题应该是最小的。 Selenium webdriver实现速度更快。

总结实际上是没有人回答它取决于您想要的定位器,以及您正在测试的浏览器。 我个人在99%的实例中使用XPath。

我个人几乎只使用XPath偶尔使用CSS定位器。

事实上,X路径是准确的。 但是,它们也非常脆弱。 对网站进行任何改动都有可能会破坏您的测试。 ID是迄今为止最不易碎的,因为如果您对a的更改无关紧要,您的测试将始终找到它。

CSS选择器更快但不总是可用; 您可以始终依赖XPath,但可能会对性能产生影响。

Xpath是我使用的方式。 如果您的节点具有唯一ID,它将有所帮助。

找到元素的最好和最快的方法是id。 在许多浏览器中,通过它的id找到元素的时间是线性的甚至是常量的。 非常快。

例如,给定一个定义为的元素:

 

你会发现它是这样的:

 selenium.type("passwd-id", "test"); 

或者,如果您使用的是webdriver API:

 element = driver.findElement(By.id("passwd-id")); 

如果您网页上的元素没有ID,请添加它们! 或者要求开发人员添加它们!

找到元素的下一个最佳方法是按名称。 这也很快,特别是如果页面上的名称是唯一的。

例如:

 selenium.type("passwd", "test"); 

或者,如果您使用的是webdriver API:

 element = driver.findElement(By.name("passwd")); 

找到元素的第三种方法是使用CSS选择器。 现代浏览器非常擅长以这种方式定位元素。

定位元素的最糟糕方式是使用xpath。 xpath缓慢而脆弱,难以阅读。

Selenium的主要贡献者Simon Stewart在这里回答了这个问题: http : //www.youtube.com/watch? v = oX-0Mt5zju0&feature = related寻找时间戳39:00

这里也有很好的信息: http : //seleniumhq.org/docs/02_selenium_ide.html#locating-elements