视频没有以 geckodriver 开头
Video does not start with geckodriver
我正在使用自动化测试,我正在尝试为多个环境中的 运行ning 测试设置 selenium 网格。
我已经在 Mac OS X 10.11 和 Windows10 中成功地 运行 测试了 chrome 驱动程序。
现在,当我尝试 运行 测试功能时,在带有视频元素的页面中,在 firefox (geckodriver) 上提示以下消息:
Firefox is installing components needed to play audio or video, please try again later
视频没有开始。
我在 selenium 网格的 Hub(Mac OS X) 和 Node(Windows 10) 上 运行ning selenium standalone。
我已尝试创建配置文件并将其导入节点配置 (windowsNodeConfig.json):
{
"capabilities": [
(...)
{
"browserName": "firefox",
"maxInstances": 5,
"platform": "WINDOWS",
"marionette": true,
"acceptInsecureCerts": true,
"webdriver.gecko.driver": "geckodriver.exe",
"firefox_profile": "firefoxProfile"
}
(...)
],
"nodeTimeout": 180000,
"browserTimeout": 180,
"timeout": 180,
"newSessionWaitTimeout": 180,
"cleanUpCycle": 5000,
"firefoxProfileTemplate": "firefoxProfile"
}
版本:
独立硒:3.4.0
壁虎驱动程序:0.16.1
火狐(Windows):53.0.3
我运行如下设置节点:
$ java -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig windowsNodeConfig.json -hub http://<IP_ADDRESS>:4444
运行 Hub如下:
$ java -jar selenium-hub/selenium-server-standalone-3.4.0.jar -role hub
我创建的 firefox 配置文件安装了 Widevine 内容解密模块 插件。但是在节点日志上我可以看到以下行:
JavaScript error: resource://gre/modules/AddonManager.jsm, line 2570: NS_ERROR_NOT_INITIALIZED: AddonManager is not initialized
相同的测试特征 运行s 在 chrome.
我已经创建了 firefox 配置文件,如下所述:
https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_creating-a-profile
我是否缺少任何配置?
问题提出后,方法发生了变化,现在这三个对我有用:
只需修改自动生成的临时 FF 配置文件首选项,让它下载插件并启用播放:
import { Builder } from 'selenium-webdriver';
import firefox from 'selenium-webdriver/firefox';
const driver = new Builder()
.withCapabilities({
browserName: 'firefox',
...,
})
.setFirefoxOptions(
new firefox.Options()
.setPreference('media.eme.enabled', true)
.setPreference('media.gmp-manager.updateEnabled', true),
)
.build();
这每次都会下载插件,但仍然很快。无需在每次测试前复制配置文件以防止 cache/cookies/storage... 结转,如果您进行远程测试,则无需通过网络传输配置文件。
如果有时无法设置 FF 首选项(例如在 BrowserStack 上),您可以通过较低级别的方法尝试相同的方法:
import { Builder } from 'selenium-webdriver';
const builder = new Builder()
.withCapabilities({
browserName: 'firefox',
...,
'moz:firefoxOptions': {
prefs: {
'media.eme.enabled': true,
'media.gmp-manager.updateEnabled': true,
},
},
})
.build();
创建您的自定义配置文件,打开它,安装 OpenH264 视频编解码器 和 Widevine 内容解密模块 插件(去到视频页面,FF 会这样做),关闭它,删除不需要的文件(除 gmp-gmpopenh264、gmp-widevinecdm、prefs.js 和 times.json 似乎可以删除)并设置您的脚本以在每个 Selenium [= 之前复制配置文件66=](以防止结转)。配置文件可以通过以下方式使用:
import { Builder } from 'selenium-webdriver';
const driver = new Builder()
.withCapabilities({
browserName: 'firefox',
...,
'moz:firefoxOptions': { args: ['-profile', './path/to/firefoxProfile'] }
})
.build();
这样(args: ['-profile'
) FF 被告知从文件系统加载配置文件,有一些含义。这在 BrowserStack 上对我不起作用(不能同时提供 --profile 参数和配置文件)。
以与 2. 相同的方式创建配置文件,并通过以下方式加载:
import { Builder } from 'selenium-webdriver';
import firefox from 'selenium-webdriver/firefox';
const driver = new Builder()
.withCapabilities({
browserName: 'firefox',
...,
})
.setFirefoxOptions(
new firefox.Options()
.setProfile('./path/to/firefoxProfile'),
)
.build();
配置文件通过这种方式被压缩和编码,因此 FF 将其作为字符串获取。
-
-
- ...FF 配置文件可以通过编程方式创建,因此还有一些选项可以避免在 2 中手动创建。我没有尝试过这些。
我正在使用自动化测试,我正在尝试为多个环境中的 运行ning 测试设置 selenium 网格。
我已经在 Mac OS X 10.11 和 Windows10 中成功地 运行 测试了 chrome 驱动程序。
现在,当我尝试 运行 测试功能时,在带有视频元素的页面中,在 firefox (geckodriver) 上提示以下消息:
Firefox is installing components needed to play audio or video, please try again later
视频没有开始。
我在 selenium 网格的 Hub(Mac OS X) 和 Node(Windows 10) 上 运行ning selenium standalone。
我已尝试创建配置文件并将其导入节点配置 (windowsNodeConfig.json):
{
"capabilities": [
(...)
{
"browserName": "firefox",
"maxInstances": 5,
"platform": "WINDOWS",
"marionette": true,
"acceptInsecureCerts": true,
"webdriver.gecko.driver": "geckodriver.exe",
"firefox_profile": "firefoxProfile"
}
(...)
],
"nodeTimeout": 180000,
"browserTimeout": 180,
"timeout": 180,
"newSessionWaitTimeout": 180,
"cleanUpCycle": 5000,
"firefoxProfileTemplate": "firefoxProfile"
}
版本:
独立硒:3.4.0
壁虎驱动程序:0.16.1
火狐(Windows):53.0.3
我运行如下设置节点:
$ java -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig windowsNodeConfig.json -hub http://<IP_ADDRESS>:4444
运行 Hub如下:
$ java -jar selenium-hub/selenium-server-standalone-3.4.0.jar -role hub
我创建的 firefox 配置文件安装了 Widevine 内容解密模块 插件。但是在节点日志上我可以看到以下行:
JavaScript error: resource://gre/modules/AddonManager.jsm, line 2570: NS_ERROR_NOT_INITIALIZED: AddonManager is not initialized
相同的测试特征 运行s 在 chrome.
我已经创建了 firefox 配置文件,如下所述: https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles#w_creating-a-profile
我是否缺少任何配置?
问题提出后,方法发生了变化,现在这三个对我有用:
只需修改自动生成的临时 FF 配置文件首选项,让它下载插件并启用播放:
import { Builder } from 'selenium-webdriver'; import firefox from 'selenium-webdriver/firefox'; const driver = new Builder() .withCapabilities({ browserName: 'firefox', ..., }) .setFirefoxOptions( new firefox.Options() .setPreference('media.eme.enabled', true) .setPreference('media.gmp-manager.updateEnabled', true), ) .build();
这每次都会下载插件,但仍然很快。无需在每次测试前复制配置文件以防止 cache/cookies/storage... 结转,如果您进行远程测试,则无需通过网络传输配置文件。
如果有时无法设置 FF 首选项(例如在 BrowserStack 上),您可以通过较低级别的方法尝试相同的方法:
import { Builder } from 'selenium-webdriver'; const builder = new Builder() .withCapabilities({ browserName: 'firefox', ..., 'moz:firefoxOptions': { prefs: { 'media.eme.enabled': true, 'media.gmp-manager.updateEnabled': true, }, }, }) .build();
创建您的自定义配置文件,打开它,安装 OpenH264 视频编解码器 和 Widevine 内容解密模块 插件(去到视频页面,FF 会这样做),关闭它,删除不需要的文件(除 gmp-gmpopenh264、gmp-widevinecdm、prefs.js 和 times.json 似乎可以删除)并设置您的脚本以在每个 Selenium [= 之前复制配置文件66=](以防止结转)。配置文件可以通过以下方式使用:
import { Builder } from 'selenium-webdriver'; const driver = new Builder() .withCapabilities({ browserName: 'firefox', ..., 'moz:firefoxOptions': { args: ['-profile', './path/to/firefoxProfile'] } }) .build();
这样(
args: ['-profile'
) FF 被告知从文件系统加载配置文件,有一些含义。这在 BrowserStack 上对我不起作用(不能同时提供 --profile 参数和配置文件)。以与 2. 相同的方式创建配置文件,并通过以下方式加载:
import { Builder } from 'selenium-webdriver'; import firefox from 'selenium-webdriver/firefox'; const driver = new Builder() .withCapabilities({ browserName: 'firefox', ..., }) .setFirefoxOptions( new firefox.Options() .setProfile('./path/to/firefoxProfile'), ) .build();
配置文件通过这种方式被压缩和编码,因此 FF 将其作为字符串获取。
-
-
- ...FF 配置文件可以通过编程方式创建,因此还有一些选项可以避免在 2 中手动创建。我没有尝试过这些。
-