我已经在硒IDE中做了一些研究和大量的工作,但我还找不到任何方法来做到这一点。
我想做的基本上是添加额外的支持,并更改一些命令的现有实现,即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自动构建服务器将在那里每晚运行新的测试。我希望这能在我们的Devs的最小干预下实现(好吧,现在只有我一台ATM,在他们发明每天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和Firefox13的1.9.1版本(在thinapp实现中,由于工作限制,我显然无法安装完整版本)。
现在,我在xpi文件中的WebDriver-Junit4.js文件中找到了代码的一部分,这样我就可以修改它,并用我的自定义代码重建插件,但如果只是通过selenium ide来完成,那就太好了,因为我不确定当我在那里的时候,我还会破坏什么。
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;
}
}
要检查Selenium单元测试的结果:请使用firebug。