2012-11-19 152 views
3

我已经在selenium IDE中做了一些研究和大量工作,我找不到任何这样做的方法。自定义Selenium Java Junit4 Webdriver导出器

我想要做的是基本上添加额外的支持,并改变一些命令的现有实现,即isTextPresent和addSelection。我基本上可以将WebDriver JUnit导出器的大部分功能放在一边,因为它工作正常,但只是想添加一些自定义的方法返回。

比如我想给了出口商的isTextPresent()从此改变:

// Warning: waitForTextPresent may require manual changes 
for (int second = 0;; second++) { 
    if (second >= 60) fail("timeout"); 
    try { if (driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*SOME INTERESTING TEXT[\\s\\S]*$")) break; } catch (Exception e) {} 
      Thread.sleep(1000); 
} 

要这样:

SeleniumHelperUtil.isTextPresent("SOME INTERESTING TEXT");

这让我可以用我的定制SeleniumHelperUtil java类,我想我所有的硒测试使用。这是一个大型复杂的工作流程项目,所以我们最终会有数百个测试。我希望我的测试人员构建他们的测试用例,使用WebDriver将它们导出到Java中,并将其导入到JUnit4测试中。然后,他们可以将它们检入CVS,我们的自动Hudson构建服务器将每晚进行新的测试。我希望这会在我们的开发人员干预最小的情况下发生(现在它真的只有我自动取款机,我没有时间,直到他们发明了30小时的一天:))。

我已经试过

我试图做的,从webdriver.js,包括所有选项的代码剪切和粘贴制作一个自定义的出口国,我已经修改了WAITFOR功能看起来像这样的:

function waitFor(expression) { 
    return "SeleniumHelperUtil.isTextPresent(" + expression ")"; 
} 

不幸的是我的全部取回是WebDriver.js实现其功能是:

// Warning: waitForTextPresent may require manual changes 
for (int second = 0;; second++) { 
    if (second >= 60) fail("timeout"); 
    try { if (driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*SOME INTERESTING TEXT[\\s\\S]*$")) break; } catch (Exception e) {} 
      Thread.sleep(1000); 
} 

我使用的是Selenium和Firefox 13的1.9.1版本(由于工作限制,我无法完全安装版本)。

现在我已经在xpi文件中的WebDriver-Junit4.js文件中找到了代码的一部分,所以我可以修改它并使用我的自定义代码重新生成插件,但它会很好,只需通过硒因为我不确定当我在那里时还有什么可能会破灭。

+0

现在我已经快速修改了Webdriver-Junit4.js代码,直到我找到了解决此问题的更好方法。麻烦的是,如果我离开这里,我会锁定一个不合意的版本。如果我设法使这些更改具有自主性,我会在这里添加它们。 – tbone

回答

0
public boolean isTextPresent(WebDriver driver, String textToCheck) 
{ 
    try 
    { 
     org.openqa.selenium.By by = By.xpath("//p[contains(.,'"+textToCheck+"')]")); 
     driver.findElement(by); 
     return true; 
    } 
    catch (NoSuchElementException e) 
    { 
     return false; 
    } 
} 

检查硒单元测试的结果:使用萤火虫。

+0

非常感谢。我最终修改了Junit4 Selenium插件以放出SeleniumHelperUtil.isTextPresent(驱动程序,文本);方法签名,然后我几乎做了上面的助手类。它在某些方法上运行良好,但我不得不放弃它并转向其他更紧迫的优先事项。我认为有2或3种方法仍然可以编写和修改,但我可能可以将其传递给其他人。 – tbone

相关问题