在完整测试中使用通用webdriver对象的目的是什么

时间:2014-09-14 16:16:05

标签: selenium webdriver

在流程中逐页导航时,我们将相同的驱动程序对象传递给所有页面构造函数。使用这种方式的优点,缺点和目的是什么?

由于

2 个答案:

答案 0 :(得分:0)

新的驱动程序实例需要新的浏览器会话,这可能需要几秒钟才能加载。如果您正在测试的应用程序需要登录,那么您可能需要等待几秒钟。假设您在计算机上运行了100个测试套件:如果您等待每个新浏览器加载并登录10秒钟,则需要等待16分钟以上;如果你在另一个浏览器上运行相同的套件,那么你需要等待32分钟。失去的时间可能成为工作流程问题。

有两种方法可以解决这类问题。

更实惠的解决方案是在一些或所有测试中回收一个浏览器实例。每次测试不是每个浏览器等待10秒,而是每个浏览器等待10秒,并尽力在测试之间重置浏览器的状态。

更正确的解决方案是让您的测试彼此隔离,并在云(可能是虚拟化的)测试机器中运行它们。所有测试都可以并行运行,节省了挂钟时间。测试不需要担心重置状态,因为测试之间不会进行任何状态。确保完全覆盖更容易,因为在另一个浏览器上运行套件就像旋转一些更多的测试机器一样简单。这种解决方案需要更多的计算机时间,但需要更少的挂钟时间,因为这项工作是并行实现的。

如果你刚刚开始,那么经济实惠的解决方案可能更具吸引力,因为它更易于组合。

答案 1 :(得分:0)

webdriver实例链接到由相应驱动程序对象启动的特定浏览器实例。需要将相同的实例传递给页面对象构造函数,以便使测试用例在单个浏览器实例(相同的浏览器窗口)中运行,理想情况就是如此。只有在下一个测试脚本开始执行时才需要新的驱动程序实例。 TestNG框架提供了一组注释,可以控制浏览器实例的打开和关闭。