一尘不染

每个测试方法都有新的WebDriver实例吗?

selenium

在Selenium-webdriver中创建webdriver实例的最佳实践是什么?每个测试方法,每个测试类别或每个测试运行一次?

启动它们似乎相当(非常!)昂贵,但是在测试之间保持开放很可能会泄漏测试方法之间的信息。

还是有其他选择-单个webdriver实例是单个浏览器窗口(不包括弹出窗口),还是有一种方法可以从给定的驱动程序实例启动新窗口/会话?

谢谢马特


阅读 229

收藏
2020-06-26

共1个答案

一尘不染

我发现在使用真正的浏览器(例如Firefox)时,在测试方法之间重用浏览器实例可以节省大量时间。使用HtmlUnitDriver运行测试时,几乎没有好处。

关于不确定性测试的危险,这是完全确定性测试和您的时间之间的权衡。集成测试通常涉及这些折衷。如果要进行完全确定性的集成测试,则还应该担心在两次测试运行之间清除数据库/服务器状态。

如果要重用浏览器实例,您绝对应该做的一件事是在两次运行之间清除/存储cookie。

driver.manage().deleteAllCookies();

我在tearDown()方法中做到了。另外,如果您的应用程序在客户端存储了任何数据,则需要清除该数据(可能通过JavascriptExecutor)。对于正在测试的应用程序,执行此操作后看起来应该像是完全不相关的请求,这实际上将不确定性行为的风险降到最低。

2020-06-26