无法更改 firefox 的 selenium-webdriver 语言
Cannot change language of selenium-webdriver for firefox
我正在运行基于 selenium-webdriver (firefox) 进行端到端测试。我的一些测试用例基于比较结果消息。问题是当我 运行 在我的本地机器(和我的本地 firefox 浏览器)上测试时,语言自动从 EN 更改,这破坏了我的一些测试用例(比较相同的消息但使用不同的语言)。
首先,我尝试在浏览器中更改它。我重新排列了我的首选语言列表,使 EN 位于第一位。在每个测试 运行 中,它都回到原来的顺序(第二位是 EN)。我还尝试删除自动选择的语言。但在第一次测试后 运行,语言列表恢复到以前的形式(EN 排在第二位)。
接下来,我尝试为我的网络驱动程序设置语言。我的最终代码:
let profile = new firefox.Profile().setPreference("intl.accept_languages", "en-US");
let options = new firefox.Options().setProfile(profile);
let driverBuilder = new selenium.Builder().forBrowser(webDriverConfig.browserName).setFirefoxOptions(options).build();
但这根本没有效果。在测试期间,我仍然得到错误的语言环境,并且在我的 firefox 设置中进行 运行ning 测试后,我仍然首先得到错误的语言(在语言首选项列表中)。
我如何在测试期间将英语设置为我的 accepted/preferred 语言?
好的,我已经解决了。问题是我混合了两种方法,这两种方法都是我在 selenium-webdriver 代码的注释中找到的。我在 github(最近的主分支)上找到的第一个看起来像这样:
let options = new firefox.Options()
.addExtensions('/path/to/firebug.xpi')
.setPreference('extensions.firebug.showChromeErrors', true);
所以,这里可以调用 Options 对象的 setPreference()。此代码片段来自最近的 master 分支。问题是,当前的 master 发布为不稳定 (4.0.0-alpha.sth...)。
最后发布的稳定版本是 3.6.0,api 之间有很多差异。所以我直接在我在项目中引用的 selenium-webdriver 包中找到了类似的代码示例,并且在该版本中设置首选项如下所示:
let profile = new firefox.Profile();
profile.addExtension('/path/to/firebug.xpi');
profile.setPreference('extensions.firebug.showChromeErrors', true);
let options = new firefox.Options().setProfile(profile);
在此 api 的稳定版本中,setPreference() 方法属于配置文件 class。但除此之外还有另一个很大的不同。在 4.0.0 版本 api 中,方法 returns 修改对象本身,而在稳定版本中,方法仅设置状态。所以这在稳定版中不起作用:
let profile = new firefox.Profile().setPreference("intl.accept_languages", "en-US");
这是正确的代码:
let profile = new firefox.Profile();
profile.setPreference("intl.accept_languages", "en,en-US");
最后,如果您想为 firefox webdriver 设置语言环境,这里是 selenium-webdriver 3.6.0 的代码示例:
let profile = new firefox.Profile();
profile.setPreference("intl.accept_languages", "en,en-US");
let options = new firefox.Options().setProfile(profile);
let driver = new selenium.Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
对于 selenium-webdriver 4.0.0:
let options = new firefox.Options()
.setPreference("intl.accept_languages", "en,en-US");
let driver = new selenium.Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
我正在运行基于 selenium-webdriver (firefox) 进行端到端测试。我的一些测试用例基于比较结果消息。问题是当我 运行 在我的本地机器(和我的本地 firefox 浏览器)上测试时,语言自动从 EN 更改,这破坏了我的一些测试用例(比较相同的消息但使用不同的语言)。 首先,我尝试在浏览器中更改它。我重新排列了我的首选语言列表,使 EN 位于第一位。在每个测试 运行 中,它都回到原来的顺序(第二位是 EN)。我还尝试删除自动选择的语言。但在第一次测试后 运行,语言列表恢复到以前的形式(EN 排在第二位)。
接下来,我尝试为我的网络驱动程序设置语言。我的最终代码:
let profile = new firefox.Profile().setPreference("intl.accept_languages", "en-US");
let options = new firefox.Options().setProfile(profile);
let driverBuilder = new selenium.Builder().forBrowser(webDriverConfig.browserName).setFirefoxOptions(options).build();
但这根本没有效果。在测试期间,我仍然得到错误的语言环境,并且在我的 firefox 设置中进行 运行ning 测试后,我仍然首先得到错误的语言(在语言首选项列表中)。 我如何在测试期间将英语设置为我的 accepted/preferred 语言?
好的,我已经解决了。问题是我混合了两种方法,这两种方法都是我在 selenium-webdriver 代码的注释中找到的。我在 github(最近的主分支)上找到的第一个看起来像这样:
let options = new firefox.Options()
.addExtensions('/path/to/firebug.xpi')
.setPreference('extensions.firebug.showChromeErrors', true);
所以,这里可以调用 Options 对象的 setPreference()。此代码片段来自最近的 master 分支。问题是,当前的 master 发布为不稳定 (4.0.0-alpha.sth...)。 最后发布的稳定版本是 3.6.0,api 之间有很多差异。所以我直接在我在项目中引用的 selenium-webdriver 包中找到了类似的代码示例,并且在该版本中设置首选项如下所示:
let profile = new firefox.Profile();
profile.addExtension('/path/to/firebug.xpi');
profile.setPreference('extensions.firebug.showChromeErrors', true);
let options = new firefox.Options().setProfile(profile);
在此 api 的稳定版本中,setPreference() 方法属于配置文件 class。但除此之外还有另一个很大的不同。在 4.0.0 版本 api 中,方法 returns 修改对象本身,而在稳定版本中,方法仅设置状态。所以这在稳定版中不起作用:
let profile = new firefox.Profile().setPreference("intl.accept_languages", "en-US");
这是正确的代码:
let profile = new firefox.Profile();
profile.setPreference("intl.accept_languages", "en,en-US");
最后,如果您想为 firefox webdriver 设置语言环境,这里是 selenium-webdriver 3.6.0 的代码示例:
let profile = new firefox.Profile();
profile.setPreference("intl.accept_languages", "en,en-US");
let options = new firefox.Options().setProfile(profile);
let driver = new selenium.Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
对于 selenium-webdriver 4.0.0:
let options = new firefox.Options()
.setPreference("intl.accept_languages", "en,en-US");
let driver = new selenium.Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();