当前位置: 首页 > 面试题库 >

Selenium C#中的无头Firefox

柳俊健
2023-03-14
问题内容

我想无头运行Firefox。

Firefox不隐藏浏览器窗口或在虚拟桌面中打开它,而是通过使用“ -headless”标志来支持无头模式。

问题是我知道如何在Chrome中执行此操作,但在Firefox中却不行。

我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace MyApp {
public partial class Form1: Form {
    public Form1() {
        InitializeComponent();
    }

    private void StartBtn_Click(object sender, EventArgs e) {

        IWebDriver driver;
        FirefoxOptions options = new FirefoxOptions();
        options.AddArguments("--headless");
        driver = new FirefoxDriver(options);
    }
}
}

我的WinForm应用程序只有一个名为StartBtn的按钮。单击该按钮后,Firefox应该无头运行,但会在正常窗口中打开。

更新 我将firefox更新为56.0.1

现在我得到了另一个错误:

WebDriver.dll中发生了类型为’OpenQA.Selenium.WebDriverException’的未处理异常

附加信息:预期的浏览器二进制位置,但在默认位置找不到二进制文件,未提供’moz:firefoxOptions.binary’功能,并且命令行上未设置二进制标志


问题答案:

Windows和Mac OS上的版本56支持Firefox中的Headless模式。确保您安装了正确的版本。

https://developer.mozilla.org/zh-
CN/Firefox/Headless_mode#Browser_support

使用 Firefox v56.0.1Selenium.WebDriver v3.6.0geckodriver
v0.19.0(x64),
这对我来说是正确的。

关于错误:

WebDriver.dll中发生了类型为’OpenQA.Selenium.WebDriverException’的未处理异常

确保您使用的是正确版本的geckodriver。我怀疑您在机器x32上使用构建x64,请获取x64构建。

https://github.com/mozilla/geckodriver/releases



 类似资料:
  • 问题内容: 我想知道Selenium C#上是否存在任何Assert类,就像我们在编码UI测试中一样。否则我将使用Microsoft.VisualStudio.TestTools.UnitTesting.Assert类在selenium中执行断言。谢谢 问题答案: 是的,您将在单元测试框架中使用该类 该库对测试框架功能类型(包括)不负责。您可以使用支持多种不同框架的工具,其中包括如果您出于任何原因

  • 问题内容: 我已经在c#中使用selenium编写了一个nUnit测试。 一切顺利,直到我必须确认JS确认框。 这是我正在使用的代码: 确认框出现在提交按钮之后。确认出现,然后立即消失,但不提交表单。无论上面的accept()行如何,其行为都是相同的。 我正在使用Firefox v15.0.1和seleniumv2.24 我试图在提交点击和确认接受之间放置一个Thread.Sleep。 我读过的所

  • 问题内容: 最近几天,我一直在将Selenium,Tor和Firefox混为一谈,以完成多项任务。我设法用Python编写了一个简单的脚本,该脚本可通过Selenium控制Firefox,而Firefox则连接到Tor以获得隐私。 现在,我正在寻找一种节省资源的方法,因此我想到了以无头模式运行Firefox,我认为这是一个常见功能,但事实并非如此。我正在寻找一种方法来做到这一点。之所以是Firef

  • 在过去的几天里,我一直把Selenium、Tor和Firefox作为多个任务的组合。我用Python编写了一个简单的脚本,通过Selenium控制Firefox,同时Firefox连接到Tor以保护隐私。 现在,我正在寻找一种节省资源的方法,所以我想到了在无头模式下运行Firefox,我认为这是一个常见的特性但似乎并非如此。我正在寻找一种方法来做这件事。之所以是火狐浏览器,而不是基于终端的浏览器,

  • 问题内容: 我正在为小型LibGDX驱动的游戏编写服务器端代码,偶然发现了一个问题。每次尝试使用任何方法时,都会遇到。 显然这是因为我没有实现ApplicationListener,所以LibGDX尚未初始化。 有没有办法以无头/ CLI方式初始化LibGDX?我需要能够在服务器端加载TiledMap对象。 com.esotericsoftware.kryonet.Server $ 1.recei

  • 问题内容: 我有一个使用对象进行通信的客户端服务器应用程序。 当我仅将一个对象从客户端发送到服务器时,一切正常。 当我尝试在同一流上一个接一个地发送多个对象时 有人可以指导我找出此错误的原因吗? 客户端写入方法 服务器读取方法 并且SecMessage类是 问题答案: 如果您要发送多个对象,通常最简单的方法是将它们放入某种持有人/收藏夹,例如or 。它省去了必须显式检查流结束的麻烦,并省去了显式传