【问题标题】:Firefox - hide browser frame with SeleniumFirefox - 使用 Selenium 隐藏浏览器框架
【发布时间】:2019-10-05 02:20:01
【问题描述】:

我试图弄清楚如何隐藏由 Selenium 实例化的 Firefox 实例的边框(包括地址栏、选项卡、标题栏......所有不是浏览器视口的东西)。

如果有某种方法可以让它使用 userChrome.css,那就很简单了。我尝试使用this answer 作为指南加载包含 userChrome.css 的配置文件文件夹,但它似乎忽略了样式。我还查看了 Firefox 的 about:config 以查看是否有一些偏好可以隐藏窗口的框架,但我还没有找到任何东西。

任何允许我在使用 Selenium 创建实例时隐藏所有或部分这些元素的解决方案都会有所帮助。我知道这很愚蠢,但有时就是这样,你知道吗?

-编辑-

我认为不需要隐藏标题栏。但其他一切都应该隐藏起来。

-另一个编辑以澄清一些事情-

我在 cmets 中提到了 kiosk 模式,作为我要实现的 某种 事物的示例。不过,Kiosk 模式并不是我想要的。这些窗口并不意味着全屏,但它们仍应缺少通用浏览器窗口的元素。把它想象成一个电子应用程序。开箱即用,Electron 缺少地址栏、选项卡等。这基本上是我们的应用程序所拥有的,但它适用于普通的旧 Firefox。同样,这些元素是否显示通常不会影响测试,但我们还是希望它们隐藏。

最后,我的一个朋友尝试使用包含在 Firefox 配置文件中的 userChrome.css 来实现这个目标,并且能够让 Selenium 使用 userChrome。所以也许我需要弄清楚我做错了什么。他的做法和我的做法最大的不同是我必须使用远程 Web 驱动程序进行测试。但即便如此,它应该能够加载 userChrome.css 文件。我会尝试用更多细节来更新这个问题。

-编辑-

我认为 userChrome 在指定配置文件时无法正常工作的原因是因为使用了 Selenium/Geckodriver/Firefox 的版本。

我开始使用的 geckodriver 版本是 0.15。 0.17 的行为完全相同。 0.18 根本不尊重我传递给它的配置文件,而是让 Firefox 打开配置文件选择窗口(不是很有用,但我至少能够选择正确的配置文件并看到 userChrome.css 被应用)。 0.24 也不例外。

Firefox 是 52.9.0。我对此无能为力。

我们正在使用 selenium(独立)服务器 3.8.1。切换到 3.141.59 没有改变任何东西。

除非有适用于 Firefox 52 的版本组合,否则我认为我唯一能做的就是等到有更新。

【问题讨论】:

  • Selenium 在 Viewport 中工作 为什么你关心隐藏边框(包括地址栏、选项卡、标题栏......所有不是浏览器视口的东西) ?你的用例是什么?
  • 我知道它对实际运行测试没有任何影响。测试的目的是测试类似信息亭的应用程序。尽管这些元素的存在与测试是否按预期工作完全没有关系,但最好(如果可能)以模拟其预期用途的方式测试 Web 应用程序。底线是:这不是我的主意,我只是想让上级高兴????
  • @DebanjanB Firefox 没有 Chrome 那样的内置信息亭模式。虽然 Chrome 有 --kiosk 命令行参数,但 Firefox 则没有。相反,我们使用 userChrome.css 来实现类似的效果。使用 Chrome 也不是一种选择。这个问题不一样。

标签: selenium firefox selenium-webdriver


【解决方案1】:

我终于明白了。为了让 Selenium 使用我的自定义配置文件,我需要执行以下操作:

FirefoxProfile profile = new FirefoxProfile(new File(path_to_profile));
FirefoxOptions options = new FirefoxOptions().setProfile(profile);
RemoteWebDriver driver = new RemoteWebDriver(options.toCapabilities());
driver.get(url_of_webpage);

感谢 Github 上的 avinesh09 提供解决问题所需的信息。它是如此简单,但这必须是我忽略尝试加载配置文件的唯一方法。

【讨论】:

    【解决方案2】:

    如果您要求的是全屏(信息亭)模式(那么您所看到的只是视口),那么它很简单:

    driver.manage().window().fullscreen();
    

    这与在浏览器中按“F11”的用户体验相同。

    【讨论】:

    • 一些打开的窗口很小。很抱歉在原始问题中没有这样说。这是一个非常奇怪的设置。
    • 如果它是一个新窗口并且您希望它全屏,您可以通过句柄切换到它并发送相同的命令。如果不是这种情况,我需要更多信息,因为我不完全了解这里的情况。
    • 我发誓我不会移动球门柱!我已经用更多细节更新了这个问题。
    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2017-07-06
    • 2011-11-23
    相关资源
    最近更新 更多