我已经在 selenium 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");
这样我就可以使用我希望所有 selenium 测试都使用的自定义 SeleniumHelperUtil java 类。这是一个大型复杂的工作流程项目,因此我们最终将进行数百次测试。我希望我的测试人员构建他们的测试用例,使用 WebDriver 将它们导出到 Java 到 JUnit4 测试中。然后他们可以将它们签入 CVS,我们的自动 Hudson 构建服务器将在每晚运行新测试。我希望在我们的开发人员干预最少的情况下实现这一点(好吧,现在真的只有我一个 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 和 Firefox 13 的 1.9.1 版本(由于工作限制,我显然无法安装完整的版本)。
现在我在 xpi 文件中的 WebDriver-Junit4.js 文件中找到了代码的一部分,因此我可以修改它并使用我的自定义代码重建插件,但是像我一样通过 selenium-ide 来完成它会很好我不知道当我在那里时我可能会破坏什么。