.Net 6控制台应用程序在与Windows任务计划程序一起运行时失败,并显示OpenQA.Selenium.NoSuchElementException

f45qwnt8  于 2023-02-04  发布在  .NET
关注(0)|答案(1)|浏览(208)

基本上就是这样,当我手动运行应用程序时,它运行良好,但当我用任务调度程序运行它时,它在应用程序中间失败,出现异常:
OpenQA.Selenium.NoSuchElementException:无此类要素:找不到元素:{"方法":" css选择器","选择器":"*[名称="开始年份"]"}
奇怪的是,该程序主要与调度程序一起工作,它在失败前调用了一些webapi,加载appsettings.json值,但当它在Windows上调度时(我尝试了一些Windows服务器,也可以在Windows 10主页上复制),当Selenium加载一个网站并登录时,每次都找不到dom元素。
我尝试以最高权限运行,尝试设置运行wether用户未登录在调度程序中,我设置了我的应用程序文件夹的值在任务调度程序开始在文本框中,似乎没有改变任务调度程序设置有帮助。
我使用IHostBuilder和依赖注入与最新的4.8.0 selenium 。支持和 selenium 。
我使用隐式等待和以下chrome选项:

var chromeOptions = new ChromeOptions
        {
            BinaryLocation = config["chromebinarypath"],
        };


            chromeOptions.AddArgument("--disable-extensions");// disabling extensions
            chromeOptions.AddArgument("--disable-gpu");// applicable to windows os only
            chromeOptions.AddArgument("--disable-dev-shm-usage");// overcome limited resource problems
            chromeOptions.AddArgument("--no-sandbox");// Bypass OS security model
            chromeOptions.AddArgument("--headless");// Bypass OS security model
        

        _chromeDriver = new ChromeDriver(chromeOptions);
        _chromeDriver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(180);
        //Important, enables waiting for dom objects till they available for 10 seconds.
        _chromeDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

谁能给我指一下正确的方向?
也许是某种 selenium 错误?也许问题与使用的iHost有关,我应该只调用类而不进行依赖注入?

bfrts1fy

bfrts1fy1#

此错误消息...

OpenQA.Selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"*[name ="start_year"]"}

...表示调用FindElement()时,所需元素在HTML DOM中***不可见***。
溶液
您可能需要稍微调整一下locator strategy,方法是从css selector中删除*,如下所示:

driver.FindElement(By.CssSelector("[name ="start_year"]"));

或者,也可以按如下方式使用By.Name

driver.FindElement(By.Name("start_year"));

相关问题