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

在java中检测seleniumRC网页上元素的最佳方法,java,selenium,css-selectors,Java,Selenium,Css Selectors,使用Java检测网页上的元素以进行自动测试的最佳方法是什么?。我知道有XPath元素和CSS元素,但哪一个最好 谢谢! NitinCSS选择器速度更快,但并不总是可用;您可以始终依赖XPath,但可能会影响性能。XPath是我使用的方式。如果您的节点具有唯一的id,则会有所帮助。查找元素的最佳和最快方法是按id。在许多浏览器中,按id查找元素的时间是线性的,甚至是恒定的。非常快 例如,给定一个元素定义为: <input type="text" name="passwd" id="passw

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

谢谢!
Nitin

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

XPath是我使用的方式。如果您的节点具有唯一的id,则会有所帮助。

查找元素的最佳和最快方法是按id。在许多浏览器中,按id查找元素的时间是线性的,甚至是恒定的。非常快

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

<input type="text" name="passwd" id="passwd-id" />
或者,如果您正在使用webdriver API:

element = driver.findElement(By.id("passwd-id"));
element = driver.findElement(By.name("passwd"));
如果页面上的元素没有ID,请添加它们!或者请开发人员添加它们

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

例如:

selenium.type("passwd", "test");
或者,如果您正在使用webdriver API:

element = driver.findElement(By.id("passwd-id"));
element = driver.findElement(By.name("passwd"));
查找元素的第三种方法是使用CSS选择器。现代浏览器非常擅长以这种方式定位元素

查找元素最糟糕的方法是使用xpath。xpath速度慢、脆弱且难以读取

Selenium的主要贡献者Simon Stewart在这里回答了这个问题: 查找时间戳39:00

这里还有很好的信息:

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

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

使用XPath时最大的负面影响是Selenium RC和JavaScript呈现引擎不好的浏览器的性能(想想IE6/IE7)。为了纠正这一点,已经做了大量的工作,所以如果使用格式良好的XPath,只搜索DOM的特定部分,这个问题应该是最小的。SeleniumWebDriver的实现要快得多

总结是真的没有一个答案,这取决于你想从定位器中得到什么,以及你正在测试的浏览器。我个人在99%的实例中使用XPath


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

X路径确实是准确的。但是,它们也很脆弱。对网站的任何改变都有可能破坏你的测试。到目前为止,ID是最不脆弱的,因为无论您是否更改了ID,您的测试都会找到它。

没有用例,这个问题只能得到主观的答案。