c# - 当应用程序被任务调度程序触发时,FindElement() 不工作
问题描述
我使用 C# 中的 Selenium 框架使用 VS 2017 Professional IDE 创建了一个控制台应用程序。这是一个自动化的应用程序,打开一个 IE 浏览器执行一些操作,并在执行完所有操作后关闭浏览器。我们在本地完成了所有正面和负面的测试(在 VS 上以调试模式运行并且没有调试模式)并且它按预期工作。
我需要在任务调度程序中配置应用程序。在任务计划程序中,当我选择“仅在用户登录时运行”时,在“常规”选项卡中,我可以看到控制台窗口正在启动,随后启动 IE 浏览器并执行操作。简而言之,它正在工作。
问题是当我在“常规”选项卡中选择“无论用户是否登录时运行”选项时,应用程序在后台运行(我看不到控制台窗口和浏览器启动,但正在生成日志。) . 应用程序为以下语句提供超时异常:
driver.FindElement(By.Id("FileUploadButtonControl")).SendKeys(path); driver.FindElement(By.Id("ButtonName")).Click();
我正在使用的 Nuget 包:
Selenium.WebDriver v4.0.0
Selenium.WebDriver.IEDriver v3.150。
浏览器 - IE 版本 11
异常详情:
对 URL http://localhost:63638/session/335b5515-69f8-4340-943d-ca06b1c991da/element/6c289ae0-e500-42dc-82bc-1b77590319eb/value的远程 WebDriver 服务器的 HTTP 请求在 120 秒后超时。- > 获取driver.FindElement(By.Id("FileUploadButtonControl")).SendKeys(path) 的异常;
对 URL http://localhost:62712/session/4a553643-2690-4984-b2ad-2d74c39e370c/window的远程 WebDriver 服务器的 HTTP 请求在 120 秒后超时。-> 获取driver.FindElement(By.Id("ButtonName")).Click() 的异常;
如果有人能让我们摆脱这种棘手的局面,那将是非常有帮助的。
解决方案
推荐阅读
- macos - 是否可以在 OS X 的屏幕上获取所有窗口的列表
- scala - udf spark Scala 返回案例类
- node.js - 为什么 break 语句在 else 循环中不起作用,有什么替代方法吗?
- java - Spring Boot Webflux 反应式 API
- javascript - 在Vue中按键交换数组内容
- gitlab - 如何在构建时获取最后一个 git commit 哈希?
- vb.net - 图片框中的旋转图像显示旋转的原始形式
- javascript - 期望一个赋值或函数调用,而是看到一个三元表达式
- stripe-payments - 出现错误:您无法在 PaymentMethod 创建期间将 PaymentMethod 附加到客户。在经常性付款意向条中
- nuxt.js - Nuxt:差异 nuxtServerInit vs Mddleware vs Plugin