我可以使用selenium网络驱动程序同时运行多个实例吗
Can I run multiple instances at once(simultaneously) with selenium-webdriver?
我正在尝试使用Selenium来自动上传文件。
我已经用selenium网络驱动程序编写了一个小程序。
问题是,有成千上万的文件需要上传,我想同时运行多个浏览器实例来加快自动化。所以我尝试了类似的东西
var i = 0;
while (i < 10) {
i++;
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();
// login and upload files......
}
我预计这将同时创建10个浏览器实例,并同时实现自动化。
但实际上。。。上面的代码将逐个创建浏览器实例,也就是说,在上一个实例完成之前,它不会创建另一个实例。
我还尝试在多个shell实例中执行该程序,这将为我启动多个浏览器实例,但我只是不想这样做。。。
您需要创建多个线程而不是循环,然后您可以在并行线程中开始每次上传。你走在正确的轨道上。你不需要硒网格来实现这一点。
关于多线程的查找。你可以从这个答案开始
需要网格来执行多个浏览器会话是不对的。只需创建多个驱动程序对象并对其进行管理,就可以调用多个浏览器会话。如果你想的话,每个会话都是分开的。
网格是用于扩展的,因为可以运行的浏览器实例数量有限制,可以保持机器性能的完整性和测试的稳定。就像一台机器中有5个以上的chrome实例一样。如果你想做更多的事情,那么你必须使用硒网格。
您应该为要打开的每个新浏览器创建一个WebDriver的新实例及其功能。
以下内容将在Chrome的五个独立实例中打开谷歌。
import * as webdriver from "selenium-webdriver";
import * as Chrome from 'selenium-webdriver/chrome';
function loadSelenium(){
let options = new Chrome.Options();
let capabilities = options.toCapabilities();
console.log('loading another');
return new webdriver.Builder()
.forBrowser('chrome')
.withCapabilities(capabilities)
.build();
}
for(let i = 0; i < 5; i++) {
let driver = loadSelenium();
driver.get('http://www.google.com');
}
这正是Selenium Grid的目的。
parallel="methods":TestNG将在单独的线程中运行所有测试方法。依赖方法也将在单独的线程中运行,但它们将遵循您指定的顺序。
parallel="tests":TestNG将在同一线程中运行同一标记中的所有方法,但每个标记都将在一个单独的线程中。这允许您将所有线程不安全的类分组在同一个线程中,并确保它们都在同一线程中运行,同时利用TestNG使用尽可能多的线程来运行测试。
parallel="classes":TestNG将在同一个线程中运行同一类中的所有方法,但每个类都将在单独的线程中运行。
parallel="instances":TestNG将在同一线程中运行同一实例中的所有方法,但两个不同实例上的两个方法将在不同的线程中运行。
- 在运行时创建指令的实例
- NodeJs:如何在EC2实例中查看PM2运行的NodeJS服务器的日志
- 在两台不同的服务器上运行同一node.js应用程序的两个实例
- 在运行时从Angular注入器检索实例
- CasperJS能否在同一进程中运行多个实例
- 代码正在成倍增加,所有实例都在运行
- 防止在 NodeJS 中同时运行两个函数实例
- 在控制台中列出正在运行的控制器实例及其 this 变量
- 运行 AJAX 函数的多个实例 - 仅第二个实例更新
- JavaScript 如何在运行时推断实例类型
- 如何将apache2.2配置为负载均衡器来管理运行javascript应用程序的tomcat实例
- 创建在单个服务器上运行的metro.js应用程序的多个实例需要哪些主要步骤
- 我可以使用selenium网络驱动程序同时运行多个实例吗
- Javascript/AAJAX操作没有在@foreach循环(MVC C#)中的每个实例上运行
- 在nowjs中运行不同的实例
- 如何在firefox插件中只运行一个代码实例
- Mongo脚本在本地运行很快,但如果在远程实例上运行就很慢
- 当类名仅在运行时可用时,如何实例化类
- JavaScript OOP:在一个对象中同时运行两个方法实例
- 同时运行两个肝脏负载实例