胜利的 Java + Selenium + Chromedriver服务器 2012 R2

问题描述

我使用 selenium 和 chromedriver 在 java 中编写了一个应用程序,它登录到网站然后执行操作。该应用程序是在 windows server 2012 上开发的,我从本地机器通过 RDP 连接到服务器。当我登录服务器时,一切正常(保持 rdp 连接处于活动状态)。

然后通过 Windows 任务计划程序中的计划任务定期启动应用程序。该应用程序部署在 payara 服务器上。

当我关闭 RDP 会话时出现问题。该应用程序已启动,但在 payara 控制台中,我注意到未找到网页的所有元素,好像有必要激活 chrome 窗口。我尝试使用无头模式(逐渐截图)但由于某种原因我仍然保持登录状态(就像目标站点收到无头模式一样),因此无法登录并随后执行操作。

看着堆栈。论坛,我发现这个线程可能可以解决问题,但我不清楚指示的脚本是做什么的。 LINK

我无法回答的问题是:为了在不使用 headless 模式的情况下从 windows 任务调度程序正确启动应用程序,RDP 连接是否始终处于活动状态?或者即使RDP断开连接也可以启动软件?

一些技术细节:

  • ChromeDriver 88.0.4324.27
  • Chromebrowser 88.0.4324.190(官方版本)
  • JDK 11

Chrome 驱动程序设置:

System.setProperty("webdriver.chrome.driver","C:\\chromedriver_win32\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension",false);
options.addArguments("--disable-blink-features");
options.addArguments("--disable-blink-features=AutomationControlled");
options.addArguments("--no-sandBox");
options.addArguments("--disable-gpu");
options.setAcceptInsecureCerts(true);
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);

欢迎提出任何建议。 提前非常感谢

解决方法

我不确定它是否会帮助你.. 您可以使用注册表启用 RDP 保持活动

在这里你可能会有一些想法 https://admx.help/?Category=Windows_10_2016&Policy=Microsoft.Policies.TerminalServer::TS_KEEP_ALIVE https://superuser.com/questions/1144853/how-do-i-keep-an-rdp-session-alive-from-the-client-side