【问题标题】:Setting up Selenium Firefox profile设置 Selenium Firefox 配置文件
【发布时间】:2016-04-09 16:08:45
【问题描述】:

在运行我们的测试时,我们遇到了一个与 FireFox 在浏览器没有焦点时管理事件的方式有关的问题。

我们发现,通过将“focusmanager.testmode”首选项设置为 true (https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/157) 设置 FireFox 配置文件,可以解决此问题。

我的问题是,您是否知道我们的 webdriver 的配置文件/配置中有任何其他偏好/功能/值得拥有的东西?

这可以为我们在以后调试奇怪的问题/行为时节省大量时间,如果您能给我任何建议,我将不胜感激。

【问题讨论】:

  • 老实说,我非常反对拥有一组自定义首选项/配置文件设置:(a) 尽量减少测试内容与普通用户看到的内容之间的差异,(b) 尽量减少特定于浏览器的代码。我完全支持 FF 错误得到修复和默认行为改变,而不是人们选择不同的解决方法。换句话说,我希望 Firefox 成为一个黑盒子。
  • @AndrewRegan 您能否将您的评论作为答案,以便我将其标记为已接受?谢谢。

标签: javascript selenium selenium-webdriver cucumber


【解决方案1】:

Firefox 有各种偏好,可以调整以提高测试稳定性。但正如Andrew Regan 指出的那样,更改任何内容都可能会影响您的测试,因此,这可能不是一个最佳主意。

无论如何,这是一组我用来减少由于意外浏览器行为而导致测试失败的首选项:

// Disable checking if firefox is default browser
lockPref('browser.shell.checkDefaultBrowser', false);

// Disable restoring session
lockPref('browser.sessionstore.resume_from_crash', false);

// Disable updater
lockPref("app.update.enabled", false);
// make absolutely sure it is really off
lockPref("app.update.auto", false);
lockPref("app.update.mode", 0);
lockPref("app.update.service.enabled", false);

// Prevent closing dialogs
lockPref("browser.showQuitWarning", false);
lockPref("browser.warnOnQuit", false);
lockPref("browser.tabs.warnOnClose", false);
lockPref("browser.tabs.warnOnCloseOtherTabs", false);

// Disable Add-ons compatibility checking
clearPref("extensions.lastAppVersion");

// Don't show 'know your rights' on first run
pref("browser.rights.3.shown", true);

//Disable plugin checking
lockPref("plugins.hide_infobar_for_outdated_plugin", true);
clearPref("plugins.update.url");

// Disable health reporter
lockPref("datareporting.healthreport.service.enabled", false);

// Disable all data upload (Telemetry and FHR)
lockPref("datareporting.policy.dataSubmissionEnabled", false);

// Disable crash reporter
lockPref("toolkit.crashreporter.enabled", false);
Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;

// Browser Console command line
pref("devtools.chrome.enabled", true);

要自动化设置首选项的过程,您可能喜欢使用所谓的 Firefox 自动配置文件。 示例配置:https://github.com/cliqz-oss/firefox-autoconfigs

【讨论】:

  • 我们决定避免篡改配置文件并采用 Andrew Regan 的解决方案。还是谢谢。
【解决方案2】:

只是为了跟进我的评论,我非常反对拥有一组自定义首选项/配置文件设置:

  • 尽量减少测试内容与普通用户看到的内容之间的差异
  • 尽量减少特定于浏览器的代码
  • 此外,它还可以使诊断此类网站上的问题变得更加复杂

换句话说,我希望 Firefox(等)成为一个黑盒子。

我完全支持 Firefox 错误得到修复,甚至默认行为可能会随着时间的推移而发展,前提是每个人都“在同一页面上”。我认为测试已经足够复杂,无需人们选择不同的解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2017-08-07
    • 2016-06-25
    • 1970-01-01
    • 2021-02-13
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多