Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 在整个测试中使用公共webdriver对象的目的是什么_Selenium_Webdriver - Fatal编程技术网

Selenium 在整个测试中使用公共webdriver对象的目的是什么

Selenium 在整个测试中使用公共webdriver对象的目的是什么,selenium,webdriver,Selenium,Webdriver,在流中逐页导航时,我们将相同的驱动程序对象传递给所有页面构造函数。使用这种方法的优点、缺点和目的是什么 感谢新的驱动程序实例需要新的浏览器会话,加载该会话可能需要几秒钟。如果您正在测试的应用程序需要登录,您可能需要再等几秒钟。假设您在您的机器上运行一套100个测试:如果您等待10秒,等待每个新浏览器加载和登录,您将花费16分钟的等待时间;如果在另一个浏览器上运行同一套件,您最多需要等待32分钟。浪费的时间可能会成为一个工作流问题 有两种方法可以解决这类问题 更经济的解决方案是在部分或所有测试中回

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


感谢

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

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

更经济的解决方案是在部分或所有测试中回收一个浏览器实例。与每个浏览器、每个测试等待10秒不同,您可以在每个浏览器上等待10秒,并尽最大努力在测试之间重置浏览器的状态

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


如果您刚刚起步,价格合理的解决方案可能更具吸引力,因为它更易于组合。

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

除了速度之外,没有什么。如果测试可以共享浏览器,那么在每次启动浏览器的开销上浪费时间是没有意义的。问题变成了确保每个测试都正确地履行了它的职责,即从头开始,删除它创建的数据。