C# Selenium - 无界面浏览器

3

我开发了一个小应用程序(使用C#),它使用Selenium自动化测试网站。一切都进行得很顺利。但是当我尝试使用“无头”浏览器运行相同的应用程序时,测试就无法正常工作。我在下面的代码中遇到了问题:

var emailTextBox = driver.FindElement(By.Id("j_username"));

OpenQA.Selenium.WebDriverException:“远程WebDriver服务器的HTTP请求http://localhost:49309/session/d4416c4b-e674-468b-8d6e-6a8bfc9bdf1d/element在60秒后超时。”

同样的测试可以在普通浏览器中工作,但在无头模式下不起作用,我尝试使用Firefox、Chrome、PhantomJS(都是无头的),但它们都不起作用...

你有什么想法吗?

我的整个代码如下:

'''

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace MacDo
{
    class Program
    {
        static void Main(string[] args)
        {
            var driverService = FirefoxDriverService.CreateDefaultService();
            driverService.HideCommandPromptWindow = true;

            var options = new FirefoxOptions();
            options.AddArguments("-headless");

            IWebDriver driver = new FirefoxDriver(driverService, options);
            driver.Url = "https://www.mcdonalds.fr/";
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10000);

            System.Threading.Thread.Sleep(2000);

            var seConnecter = driver.FindElement(By.Id("seconnecter"));
            seConnecter.Click();

            driver.Close();
            driver.Quit();

            Console.ReadKey();
        }
    }
}

'''

我使用Firefox浏览器73.0.1 (32位)(-> 我使用Geckodriver版本0.26.0)

如前所述,它在普通模式下工作正常,但在无头模式下不起作用...


PhantomJS已被弃用。请使用现代浏览器的现有Web驱动程序之一。每个浏览器供应商现在都有一个。 - Greg Burghardt
你能否发布一下你正在使用的初始化Web驱动程序的代码?你还能包括你正在使用的浏览器版本和Web驱动程序的版本吗? - Greg Burghardt
@GregBurghardt,您将在下面看到我的代码和浏览器版本! - Nounet
@GregBurghardt 我使用的是版本0.26.0。 - Nounet
1
请编辑您的问题并添加此信息。在评论中很容易丢失。 - Greg Burghardt
显示剩余5条评论
1个回答

2

我曾经遇到过相同的问题,即脚本在无头模式下无法正常工作,后来发现这是由于默认分辨率引起的。你可以尝试添加以下代码:

options.addArguments("window-size=1920,1080");

值得一试!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接