量角器:无法在测试中创建新的浏览器实例
Protractor: Unable to create a new browser instance in a test
我正在尝试进行视频通话,我需要两个浏览器来模拟两个不同的用户。因此,我试图在我的测试之间创建一个新的浏览器实例。我正在使用以下代码创建一个新的浏览器实例:
const config = {
browserName: 'chrome',
platformName: 'windows 10',
'acceptInsecureCerts': true,
'chromeOptions': {
'args': [ "--use-fake-device-for-media-stream", "--use-fake-ui-for-media-stream", "--ignore-certificate-errors"]
},
};
const driver: WebDriver = new protractor.Builder().withCapabilities(config).build();
newBrowser = new protractor.ProtractorBrowser(driver);
await newBrowser.driver.get('https://google.com');
当我 运行 代码时,我在最后一行收到以下错误
- Failed: Cannot read property 'onPageLoad' of undefined
有什么我遗漏的吗?
在此先感谢您的帮助!
查看此库 (https://www.npmjs.com/package/protractor-parallel-instances) 和量角器的源代码后,我现在终于能够创建任何浏览器实例,前提是我已连接 webdriver 和必要的设备或处于可访问状态。我使用以下函数创建了一个浏览器实例
const config = {
browserName: 'chrome',
platformName: 'windows 10',
'acceptInsecureCerts': true,
'chromeOptions': {
'args': [ "--use-fake-device-for-media-stream", "--use-fake-ui-for-media-stream", "--ignore-certificate-errors"]
},
};
async createNewBrowserSession(capabilities: any): Promise<ProtractorBrowser>{
const conf = new ConfigParser();
const config = conf.getConfig();
config.capabilities = capabilities;
const ptorRunner = new ProtractorRunner.Runner(config);
const newBrowser = await ptorRunner.createBrowser(config.plugins_);
return newBrowser as ProtractorBrowser;
}
newBrowser = await this.createNewBrowserSession(capabilities);
await newBrowser.get('https://google.com');
这会使用机器 运行 量角器可用的网络驱动程序生成一个浏览器实例。如果你想使用量角器启动的 selenium 服务器,你需要做一些更多的改变
在你的protractor.conf.js中,设置
directConnect: false
并将以上代码更新为以下内容:
const config = {
browserName: 'chrome',
platformName: 'windows 10',
'acceptInsecureCerts': true,
'chromeOptions': {
'args': [ "--use-fake-device-for-media-stream", "--use-fake-ui-for-media-stream", "--ignore-certificate-errors"]
},
};
async createNewBrowserSession(capabilities: any): Promise<ProtractorBrowser>{
const conf = new ConfigParser();
const config = conf.getConfig();
config.capabilities = capabilities;
const ptorRunner = new ProtractorRunner.Runner(config);
const newBrowser = await ptorRunner.createBrowser(config.plugins_);
return newBrowser as ProtractorBrowser;
}
await browser.getProcessedConfig().then((obj) => {
capabilities.seleniumAddress = obj.seleniumAddress;
});
newBrowser = await this.createNewBrowserSession(capabilities);
await newBrowser.get('https://google.com');
我正在尝试进行视频通话,我需要两个浏览器来模拟两个不同的用户。因此,我试图在我的测试之间创建一个新的浏览器实例。我正在使用以下代码创建一个新的浏览器实例:
const config = {
browserName: 'chrome',
platformName: 'windows 10',
'acceptInsecureCerts': true,
'chromeOptions': {
'args': [ "--use-fake-device-for-media-stream", "--use-fake-ui-for-media-stream", "--ignore-certificate-errors"]
},
};
const driver: WebDriver = new protractor.Builder().withCapabilities(config).build();
newBrowser = new protractor.ProtractorBrowser(driver);
await newBrowser.driver.get('https://google.com');
当我 运行 代码时,我在最后一行收到以下错误
- Failed: Cannot read property 'onPageLoad' of undefined
有什么我遗漏的吗?
在此先感谢您的帮助!
查看此库 (https://www.npmjs.com/package/protractor-parallel-instances) 和量角器的源代码后,我现在终于能够创建任何浏览器实例,前提是我已连接 webdriver 和必要的设备或处于可访问状态。我使用以下函数创建了一个浏览器实例
const config = {
browserName: 'chrome',
platformName: 'windows 10',
'acceptInsecureCerts': true,
'chromeOptions': {
'args': [ "--use-fake-device-for-media-stream", "--use-fake-ui-for-media-stream", "--ignore-certificate-errors"]
},
};
async createNewBrowserSession(capabilities: any): Promise<ProtractorBrowser>{
const conf = new ConfigParser();
const config = conf.getConfig();
config.capabilities = capabilities;
const ptorRunner = new ProtractorRunner.Runner(config);
const newBrowser = await ptorRunner.createBrowser(config.plugins_);
return newBrowser as ProtractorBrowser;
}
newBrowser = await this.createNewBrowserSession(capabilities);
await newBrowser.get('https://google.com');
这会使用机器 运行 量角器可用的网络驱动程序生成一个浏览器实例。如果你想使用量角器启动的 selenium 服务器,你需要做一些更多的改变
在你的protractor.conf.js中,设置
directConnect: false
并将以上代码更新为以下内容:
const config = {
browserName: 'chrome',
platformName: 'windows 10',
'acceptInsecureCerts': true,
'chromeOptions': {
'args': [ "--use-fake-device-for-media-stream", "--use-fake-ui-for-media-stream", "--ignore-certificate-errors"]
},
};
async createNewBrowserSession(capabilities: any): Promise<ProtractorBrowser>{
const conf = new ConfigParser();
const config = conf.getConfig();
config.capabilities = capabilities;
const ptorRunner = new ProtractorRunner.Runner(config);
const newBrowser = await ptorRunner.createBrowser(config.plugins_);
return newBrowser as ProtractorBrowser;
}
await browser.getProcessedConfig().then((obj) => {
capabilities.seleniumAddress = obj.seleniumAddress;
});
newBrowser = await this.createNewBrowserSession(capabilities);
await newBrowser.get('https://google.com');