2011-06-07 88 views
0

我在编写硒脚本时需要选择定位符的帮助...Selenium中的定位器首选项RC

使用XPath,CSS和标识符有什么区别? 是XPath优先于其他人吗?如果是这样,为什么?

回答

1

CSS将成为我在执行速度和可读性/可维护性方面的选择。此外,CSS定位器可能会在迭代环境中见证最少的变化(与更改链接名称,标题等相反)。使用CSS的唯一缺点是缺少IDE内部支持来制定它们。

Here是一个伟大的职位阐明为什么CSS是选择:)

+0

“唯一的缺点使用CSS是缺乏在IDE内部为内部支持提供支持。“ - 我认为Selenium IDE 1.11支持CSS :)。开心测试 – 2011-06-07 13:27:06

+0

谢谢。显然我需要升级;) – rs79 2011-06-07 13:32:53

+1

TBH我不会使用IDE来创建定位器,但它们通常都很糟糕......我通常使用帮助器方法在Java中创建一个框架,并使用像萤火虫这样的工具手动编写所有选择器或谷歌浏览器webtools – Tnem 2011-06-07 13:34:55

1

Xpath一般很慢,特别是在IE中。所有浏览器都不支持CSS选择器,尤其是IE浏览器(看到这里的趋势?)。通常使用名称或ID选择器,因为这些名称或ID选择器速度较快,并且使用xpath选择器进行备份,但不能。编写好的xpath选择器是一种技巧,如果你注意到它会导致你的测试开始放慢速度,你可能会返回并优化选择器。

3

的顺序,你应该尝试挑定位器是按以下顺序

  1. ID
  2. 名称
  3. CSS的定位
  4. XPATH

ID和Name将有助于创建良好的可维护测试,因为可以在不中断测试的情况下更改元素的类型。例如,如果你点击了一个<input type=button id='foo'>并得到了改变,以<div id='foo'>Bar</div>那么你的测试将仍然工作,只要接下来发生的事情仍然是相同的顺序

0

而其他三个答案thusfar所有提供方面的重要信息你的问题,还有一个资源,你可能会发现有帮助。我最近编写了一本食谱和比较图表,内容涵盖了Selenium支持的所有定位技术:这个快速参考字面上可以让你看到“...使用XPath,CSS,标识符之间的差异”等等。请参阅Simple-Talk.com上的XPath, CSS, DOM and Selenium: The Rosetta Stone

0

嗨刚刚添加更多, 1)。 ID或NAME是浏览器原生的,所有其他CSS,XPATH,Javascript对浏览器来说都是外来的(也就是说,他们必须依赖各自的引擎)。所以本土永远是第一选择。 2)。你不能使用CSS或XPATH的所有功能(即:不同版本的CSS或XPATH的浏览器支持问题)。 3)。 XPATH在IE7上存在问题。 (所以我只写了每个元素的位置路径) 4)。 IE7无法找到非常基本的CSS路径有时(css = table.nav td.name),所以我不得不将其改为javascript编码(dom = document.findElementsByTagName('td')[0])

0

订单选择定位器应该是:

  1. Id:如果Web应用程序遵循W3C准则,您将只能获得页面上的单个元素。因此,搜索元素的速度将是最高的。
  2. 名称
  3. 链接文本
  4. 部分链接文本
  5. 标签名称
  6. 类名
  7. CSS选择器
  8. Xpath的