在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