【问题标题】:What is the purpose of using common webdriver object across a complete test在完整测试中使用通用 webdriver 对象的目的是什么
【发布时间】:2014-09-14 16:16:05
【问题描述】:

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

谢谢

【问题讨论】:

  • 无非就是速度。如果测试可以共享一个浏览器,那么每次启动浏览器的开销都没有必要浪费时间。问题变成了确保每个测试都正确地履行了从零开始并删除它创建的数据的责任。

标签: selenium webdriver


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    新的驱动程序实例需要新的浏览器会话,这可能需要几秒钟才能加载。如果您正在测试的应用程序需要登录,您可能需要再等待几秒钟。假设你在你的机器上运行一个包含 100 个测试的套件:如果你等待 10 秒让每个新浏览器加载并登录,那么你将花费超过 16 分钟的等待时间;如果您在另一个浏览器上运行相同的套件,您最多需要等待 32 分钟。浪费的时间可能会成为工作流程问题。

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

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

    更正确的解决方案是让您的测试彼此隔离,并在一组(可能是虚拟化的)测试机器中运行它们。所有测试都可以并行运行,从而节省挂钟时间。测试不需要担心重置状态,因为测试之间没有状态。确保完全覆盖更容易,因为在另一个浏览器上运行该套件就像启动更多测试机器一样简单。此解决方案需要更多的计算机时间,但需要更少的挂钟时间,因为工作是并行完成的。

    如果您刚刚开始,价格实惠的解决方案可能更有吸引力,因为它更容易组合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2013-09-18
      相关资源
      最近更新 更多