Javascript Selenium是否支持使用不同配置文件运行多个浏览器窗口?
我正在为一个web应用程序编写测试自动化。我需要测试的产品支持的功能之一如下。不同的用户可以同时登录到不同的计算机上,当用户1在计算机1上输入一些数据时,计算机2上用户2的视图会自动实时更新该数据,而无需重新加载浏览器 我最初研究使用Selenium grid来控制多台机器来运行这些测试,但看起来不可能在特定机器上以特定顺序运行特定步骤,这是必要的。所以我打算在一台机器上运行所有东西,使用不同的Chrome配置文件 到目前为止,我的示例代码如下所示:Javascript Selenium是否支持使用不同配置文件运行多个浏览器窗口?,javascript,selenium,selenium-webdriver,Javascript,Selenium,Selenium Webdriver,我正在为一个web应用程序编写测试自动化。我需要测试的产品支持的功能之一如下。不同的用户可以同时登录到不同的计算机上,当用户1在计算机1上输入一些数据时,计算机2上用户2的视图会自动实时更新该数据,而无需重新加载浏览器 我最初研究使用Selenium grid来控制多台机器来运行这些测试,但看起来不可能在特定机器上以特定顺序运行特定步骤,这是必要的。所以我打算在一台机器上运行所有东西,使用不同的Chrome配置文件 到目前为止,我的示例代码如下所示: var selenium1 = requir
var selenium1 = require('selenium-webdriver');
var selenium2 = require('selenium-webdriver');
const chrome1 = require('selenium-webdriver/chrome');
const chrome2 = require('selenium-webdriver/chrome');
var udd = "C:\\Users\\phil\\AppData\\Local\\Google\\Chrome\\User Data\\";
var pd1 = "Profile 5";
var pd2 = "Profile 6";
const chromeOptions1 = new chrome1.Options();
chromeOptions1.addArguments(`user-data-dir=${udd}`);
chromeOptions1.addArguments(`profile-directory=${pd1}`);
const chromeOptions2 = new chrome2.Options();
chromeOptions2.addArguments(`user-data-dir=${udd}`);
chromeOptions2.addArguments(`profile-directory=${pd2}`);
var driver1 = new selenium1.Builder()
.forBrowser("chrome")
.setChromeOptions(chromeOptions1)
.build();
var driver2 = new selenium2.Builder()
.forBrowser("chrome")
.setChromeOptions(chromeOptions2)
.build();
jasmine.DEFAULT_TIMEOUT_INTERVAL = 90000;
describe('multiple browser test', function () {
afterAll(async function () {
await driver1.quit();
await driver2.quit();
});
it('can open a web page', async function () {
await driver1.get("http://www.yahoo.com");
await driver2.get("http://www.bing.com");
await driver1.sleep(5000);
await driver2.sleep(5000);
});
});
这似乎是可行的,除了一件事。当线路等待驱动程序2.quit()时调用代码>时,我得到一个错误:
错误:ECONREFUNCE connect ECONREFUNCE 127.0.0.1:[端口号]
并且第二个浏览器窗口不会关闭
问题是:
Selenium支持我所做的事情吗
如果支持,我的代码是否有明显的错误?我在这里阅读了许多相关问题,以及其他地方的文档,但让Selenium使用特定浏览器配置文件的过程似乎随着时间的推移而发生了变化,因此我不能100%相信我现在所说的是正确的
错误消息来自哪里,它意味着什么?当我在上面搜索时,它似乎与Selenium Grid有关,正如我之前所说,我不使用Selenium Grid
这应该是可行的:
我相信您遇到的错误不是由于多个驱动程序造成的。简短的回答是不,您不能在多个Chrome会话中使用多个配置文件(用户定义的目录)。但是,通过使用两个不同的浏览器WebDriver实例(例如Chrome和FF),您可以轻松实现想要实现的目标。如果可以解决配置文件问题,您可以对一个Chrome实例使用多个选项卡/窗口。该错误消息来自您使用两个驱动程序创建了两个会话,但当您发出.quit
命令时,它会终止Chrome会话。然后,对.quit()
的第二次调用不再有要关闭的会话(要连接的浏览器),因此生成了EconRefused错误。因此,尽管它打开了两个不同的Chrome窗口,我复制了创建它们的所有内容(Chrome、chromeOptions、驱动程序等),下面仍然只有一个Chrome会话?我从来没有想到过。很高兴知道,谢谢。这不是一个Chrome会话,而是一个驱动程序实例。问题出在Selenium实例上。打开两个Chrome窗口/选项卡并分别控制它们非常容易,只是不能有不同的用户数据目录