Selenium WebDriver dom定位器解决方法

时间:2016-03-30 12:03:41

标签: java selenium selenium-webdriver selenium-ide

在将测试用例从Selenium IDE导出到java / junit / WebDriver时,有没有办法为Dom Locators做一些解决方法?

这些还没有实现(大约几年?)

我有错误

// ERROR: Caught exception [Error: Dom locators are not implemented yet!]
// ERROR: Caught exception [Error: Dom locators are not implemented yet!]

我的示例 dom locator

document.findflight.servClass[2] 

<input type="radio" value="Coach" name="servClass" checked="">
<font face="Arial, Helvetica, sans-serif">
    Economy class
    <br>
    <input type="radio" value="Business" name="servClass">
    Business class
    <br>
    <input type="radio" value="First" name="servClass">
    First class
</font>

3 个答案:

答案 0 :(得分:1)

你是对的,仍然没有直接出口到&#34;实施的定位器&#34;甚至对于Selenium WebDriver(例如)。由于这个事实,您可以通过手动选择一些直接定位器策略来解决此问题。只需在Selenium定位器文档here中查看所有可能的内容。希望有所帮助。

答案 1 :(得分:1)

  

在将测试用例从Selenium IDE导出到java / junit / WebDriver时,有没有办法为Dom Locators做一些解决方法?

没有自动转换。您必须使用xpath表达式手动执行此操作:

//*[@name='findflight']/*[@name='servClass'][2]

或CSS选择器:

[name=findflight] > [name=servClass] > *:nth-child(2)
  

这些还没有实现(大约几年?)

实现该功能没有意义,因为DOM定位器不可靠。 DOM定位器与文档相关,因此页面结构的任何更改都会破坏测试。

答案 2 :(得分:0)

实际上,由于这篇文章,我找到了自己的解决方案: http://hiromia.blogspot.com/2015/10/how-to-handle-dom-in-selenium-webdriver.html

我用过:

(WebElement) ((JavascriptExecutor) driver).executeScript("return " + el[0]);