【问题标题】:Getting Error in Headless Chrome driver in Selenium C#Selenium C# 中的 Headless Chrome 驱动程序出错
【发布时间】:2018-02-14 18:15:17
【问题描述】:

我在 Selenium C# 中使用 Headless chrome 驱动程序时出错。我正在对涉及用户名和密码的网站进行自动化处理。没有 Headless chrome 效果很好。但是当我使用 headless chrome 时。它主要是给我错误

{"no such element: Unable to locate element: {\"method\":\"css selector\",\"selector\":\"

current-portfolio-collapsible > div > div > div > table > tbody > tr:nth-child(6) > td:nth-child(1) > div > a > span\"}\n

(会话信息:headless chrome=64.0.3282.167..enter code here

我仅在 Headless chrome 中收到此错误。下面是代码。

 var driverService = ChromeDriverService.CreateDefaultService();
            driverService.HideCommandPromptWindow = true;
               ChromeOptions option = new ChromeOptions();
                option.AddArgument("--headless");
                option.AddArgument("--window-size=2160,3840");
            using (var driver = new ChromeDriver(driverService, option))
            {
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
                driver.Manage().Timeouts().PageLoad = TimeSpan.FromMinutes(2);
                driver.Navigate().GoToUrl("https://www.wikifolio.com/");
                label1.Text = "Browser is opened now";                
                    try
                    {

                        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMinutes(2);
                        IJavaScriptExecutor main = (IJavaScriptExecutor)driver;
                        Task.Delay(10000);

                    main.ExecuteScript("arguments[0].click();", driver.FindElement(By.XPath("//*[@id=\"page-content\"]/header/div[2]/div/div/nav/div[2]/a[1]")));

                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
                        var username = driver.FindElement(By.CssSelector("input#Username"));
                        username.SendKeys("derhenker55@hotmail.com");

                        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

                        var password = driver.FindElement(By.CssSelector("input#Password"));
                        Task.Delay(1000);
                        password.SendKeys("password");
                        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

                        IJavaScriptExecutor loginclick = (IJavaScriptExecutor)driver;
                    Task.Delay(1000);
                    loginclick.ExecuteScript("arguments[0].click();", driver.FindElement(By.CssSelector("form > button.c-button")));

                    }
                    catch(Exception e)
                    {
                    }


            }

这就是网站。

https://www.wikifolio.com/

在这里您可以找到右上角的“登录”按钮。

请在这方面帮助我。帮助将不胜感激。谢谢

【问题讨论】:

    标签: c# selenium selenium-webdriver selenium-chromedriver headless-browser


    【解决方案1】:
    var service = ChromeDriverService.CreateDefaultService();
            service.HideCommandPromptWindow = true;
            ChromeOptions option = new ChromeOptions();
            option.AddArgument("--headless");
    
            driver = new ChromeDriver(service, option);
            wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            driver.Navigate().GoToUrl("https://www.wikifolio.com/");
            wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("/html/body/div[2]/div[1]")));
            Actions actions = new Actions(driver);
            actions.MoveToElement(driver.FindElement(By.XPath("/html/body/div[2]/div[1]/div[2]/div/div[1]/div[1]/div/div[3]/a[3]"))).Build().Perform();
    
            Thread.Sleep(2000);
            actions.Click(driver.FindElement(By.CssSelector("#change-language-dialog-container > div > div > div > div > div.c-disclaimer__buttons > div"))).Build().Perform();
            Thread.Sleep(2000);
            driver.FindElement(By.XPath("/html/body/div[2]/header/div[2]/div/div/nav/div[2]/a[1]")).Click();
            wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='Username']")));
            var username = driver.FindElement(By.XPath("//*[@id='Username']"));
            var password = driver.FindElement(By.XPath("//*[@id='Password']"));
    
            username.Clear();
            username.SendKeys("username");
            password.Clear();
            password.SendKeys("pass");
    
            IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
            executor.ExecuteScript("arguments[0].click();", driver.FindElement(By.CssSelector("button.c-button:nth-child(8)")));
    

    希望这会有所帮助!我运行它没有问题..告诉我这是否对你有帮助

    【讨论】:

    • 我认为在java中是不同的。
    猜你喜欢
    • 2022-01-28
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2017-03-10
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多