geckodriver
geckodriver copied to clipboard
Firefox 127.0.2 browser is under remote control (reason: Marionette) --headless argument not working
Firefox 127.0.2 browser is under remote control (reason: Marionette), when using without --headless argument, see below code, when used with --headless argument browser window is not launching
System
- Version: GeckoDriver 0.34.0
- Platform: Windows 11
- Firefox: 127.0.2 (64-bit)
- Selenium: 4.22.0
Testcase - Form1.cs
using System; using System.Diagnostics; using System.IO; using System.Windows.Forms; using OpenQA.Selenium; using OpenQA.Selenium.Firefox;
namespace SAPSSO_Firefox { public partial class Form1 : Form { private System.Windows.Forms.Timer _timer; private IWebDriver _driver; private FirefoxDriverService _firefoxService; private DateTime _startTime; private static readonly TimeSpan Timeout = TimeSpan.FromHours(10); private static readonly TimeSpan Interval = TimeSpan.FromMinutes(1); private static readonly TimeSpan PageLoadTimeout = TimeSpan.FromMinutes(5); private static readonly TimeSpan CommandTimeout = TimeSpan.FromMinutes(5);
public Form1()
{
InitializeComponent();
_startTime = DateTime.Now;
lblLoggedInTimeValue.Text = _startTime.ToString();
_timer = new System.Windows.Forms.Timer();
_timer.Interval = (int)Interval.TotalMilliseconds; // 1 minute interval
_timer.Tick += TimerTick;
_timer.Start();
this.StartPosition = FormStartPosition.Manual;
this.Location = new System.Drawing.Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);
LaunchBrowser();
}
private void TimerTick(object sender, EventArgs e)
{
try
{
TimeSpan elapsed = DateTime.Now - _startTime;
lblElapsedTimeValue.Text = $"{elapsed.Hours} hours, {elapsed.Minutes} minutes.";
LogElapsedTime(elapsed);
if (elapsed >= Timeout)
{
LogoutAndCloseBrowser();
_timer.Stop();
this.Close();
}
}
catch (Exception ex)
{
LogError(ex.Message);
}
}
private void LaunchBrowser()
{
try
{
LogMessage("Launching browser...");
// Set environment variables for logging
Environment.SetEnvironmentVariable("MOZ_LOG", "trace");
Environment.SetEnvironmentVariable("MOZ_LOG_FILE", @"C:\temp\SSOMFALOG\geckodriver.log");
LaunchFirefoxBrowser();
LogMessage("Browser launched successfully.");
}
catch (Exception ex)
{
LogError(ex.Message);
MessageBox.Show($"An error occurred: {ex.Message}");
}
}
private void LaunchFirefoxBrowser()
{
int retryCount = 3;
for (int i = 0; i < retryCount; i++)
{
try
{
LogMessage("Initializing Firefox options...");
var options = new FirefoxOptions();
options.SetPreference("browser.startup.homepage", "https://www.google.com");
options.LogLevel = FirefoxDriverLogLevel.Trace;
options.AddArgument("--headless");
string driverPath = @"C:\Users\kkiri\source\repos\SAPSSO-Firefox\Drivers";
LogMessage($"Using geckodriver from path: {driverPath}");
_firefoxService = FirefoxDriverService.CreateDefaultService(driverPath);
_firefoxService.HideCommandPromptWindow = false;
LogMessage("Starting FirefoxDriver...");
_driver = new FirefoxDriver(_firefoxService, options, CommandTimeout);
_driver.Manage().Timeouts().PageLoad = PageLoadTimeout;
LogMessage("Navigating to URL...");
_driver.Navigate().GoToUrl("https://www.google.com");
// If successful, break out of the retry loop
break;
}
catch (WebDriverException ex)
{
LogError($"WebDriverException: {ex.Message}");
LogError($"Stack Trace: {ex.StackTrace}");
if (i == retryCount - 1)
{
MessageBox.Show($"WebDriverException: {ex.Message}");
throw;
}
else
{
LogMessage("Retrying browser launch...");
System.Threading.Thread.Sleep(5000); // Wait 5 seconds before retrying
}
}
catch (Exception ex)
{
LogError($"General Exception: {ex.Message}");
LogError($"Stack Trace: {ex.StackTrace}");
if (i == retryCount - 1)
{
MessageBox.Show($"General Exception: {ex.Message}");
throw;
}
else
{
LogMessage("Retrying browser launch...");
System.Threading.Thread.Sleep(5000); // Wait 5 seconds before retrying
}
}
}
}
private void LogoutAndCloseBrowser()
{
try
{
LogMessage("Navigating to logout URL and closing browser...");
_driver?.Navigate().GoToUrl("https://www.google.com");
System.Threading.Thread.Sleep(5000); // Wait for 5 seconds to ensure the URL is loaded
_driver?.Quit();
LogMessage("Browser session terminated.");
}
catch (Exception ex)
{
LogError(ex.Message);
MessageBox.Show($"An error occurred while navigating to the final URL or closing the browser: {ex.Message}");
}
finally
{
_firefoxService?.Dispose();
KillGeckoDriverProcesses();
}
}
private void KillGeckoDriverProcesses()
{
try
{
var processes = Process.GetProcessesByName("geckodriver");
foreach (var process in processes)
{
process.Kill();
}
}
catch (Exception ex)
{
LogError($"Error killing geckodriver processes: {ex.Message}");
}
}
private void LogMessage(string message)
{
string logFilePath = $@"C:\temp\SSOMFALOG\SSOFFmfalog_{DateTime.Now:yyyy-MM-dd}.txt";
Directory.CreateDirectory(@"C:\temp\SSOMFALOG");
using (StreamWriter sw = new StreamWriter(logFilePath, true))
{
sw.WriteLine($"{DateTime.Now}: {message}");
}
}
private void LogError(string errorMessage)
{
string logFilePath = $@"C:\temp\SSOMFALOG\SSOFFmfalog_{DateTime.Now:yyyy-MM-dd}.txt";
Directory.CreateDirectory(@"C:\temp\SSOMFALOG");
using (StreamWriter sw = new StreamWriter(logFilePath, true))
{
sw.WriteLine($"{DateTime.Now}: An error occurred: {errorMessage}");
}
}
private void LogElapsedTime(TimeSpan elapsed)
{
string logFilePath = $@"C:\temp\SSOMFALOG\SSOFFmfalog_{DateTime.Now:yyyy-MM-dd}.txt";
Directory.CreateDirectory(@"C:\temp\SSOMFALOG");
using (StreamWriter sw = new StreamWriter(logFilePath, true))
{
sw.WriteLine($"{DateTime.Now}: Elapsed time updated: {elapsed.Hours} hours, {elapsed.Minutes} minutes.");
}
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
LogoutAndCloseBrowser();
}
}
}
Testcase - .csproj
Trace-level log
1720586771950 geckodriver INFO Listening on 127.0.0.1:54907 1720586772094 geckodriver::capabilities DEBUG Trying to read firefox version from ini files 1720586772095 geckodriver::capabilities DEBUG Found version 127.0.2 1720586772100 mozrunner::runner INFO Running command: "C:\Program Files\Mozilla Firefox\firefox.exe" "--marionette" "--headless" "-no-remote" "-profile" "C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f" 1720586772110 geckodriver::marionette DEBUG Waiting 60s to connect to browser on 127.0.0.1 1720586772110 geckodriver::browser TRACE Failed to open C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f\MarionetteActivePort 1720586772111 geckodriver::marionette TRACE Retrying in 100ms 1720586772211 geckodriver::browser TRACE Failed to open C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f\MarionetteActivePort 1720586772215 geckodriver::marionette TRACE Retrying in 100ms 1720586772315 geckodriver::browser TRACE Failed to open C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f\MarionetteActivePort 1720586772316 geckodriver::marionette TRACE Retrying in 100ms 1720586772416 geckodriver::browser TRACE Failed to open C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f\MarionetteActivePort 1720586772416 geckodriver::marionette TRACE Retrying in 100ms 1720586772517 geckodriver::browser TRACE Failed to open C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f\MarionetteActivePort 1720586772517 geckodriver::marionette TRACE Retrying in 100ms 1720586772617 geckodriver::browser TRACE Failed to open C:\Users\kkiri\AppData\Local\Temp\rust_mozprofileMYZD4f\MarionetteActivePort 1720586772618 geckodriver::marionette TRACE Retrying in 100ms Read port: 54914 1720586772781 geckodriver::marionette DEBUG Connection to Marionette established on 127.0.0.1:54914. 1720586773748 webdriver::server DEBUG <- 200 OK {"value":{"sessionId":"e1cecd51-3153-4209-979e-dbc20da81fed","capabilities":{"acceptInsecureCerts":false,"browserNa ... avior":"dismiss and notify","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0"}}} 1720586773785 webdriver::server DEBUG -> POST /session/e1cecd51-3153-4209-979e-dbc20da81fed/timeouts {"pageLoad":300000} 1720586773790 webdriver::server DEBUG <- 200 OK {"value":null} 1720586773794 webdriver::server DEBUG -> POST /session/e1cecd51-3153-4209-979e-dbc20da81fed/url {"url":"https://www.google.com"} 1720586774885 webdriver::server DEBUG <- 200 OK {"value":null}