Ubuntu虚拟机Selenium Chrome证书弹窗Robot类失效,求替代方案
问题:Linux环境下替代Robot类处理浏览器证书弹窗的方案?
我尝试使用Robot类在浏览器证书弹窗中选择“OK”按钮,该代码在Windows本地运行正常,但在Ubuntu虚拟机上执行时无法触发Enter操作。
核心代码
public void load() { setUrl(); Thread threadNavigation = new Thread() { @Override public void run() { driver.navigate().to(url); } }; Thread threadCertificateHandler = new Thread() { @Override public void run() { try { Thread.sleep(3000); Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_ENTER); robot.delay(2000); robot.keyRelease(KeyEvent.VK_ENTER); Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); } } }; // Start the threads. threadNavigation.start(); threadCertificateHandler.start(); // Wait for them both to finish try { threadNavigation.join(); threadCertificateHandler.join(); } catch (InterruptedException e) { e.printStackTrace(); } }
代码说明
使用Selenium访问URL时,页面加载前会弹出证书弹窗。此处采用双线程方案:一个线程用于访问应用URL,另一个线程处理弹窗。
证书弹窗截图

ChromeDriver初始化代码
public void getStandaloneHubNodeServerDriver(String browserType,String platformType, String url) throws MalformedURLException { DesiredCapabilities caps = new DesiredCapabilities(); logger.log(Level.INFO, () -> "Setting browser address @: " + url); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); // open Browser in maximized mode options.addArguments("disable-infobars"); // disabling infobars options.addArguments("--disable-extensions"); // disabling extensions options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems options.addArguments("--no-sandbox"); // Bypass OS security model options.setAcceptInsecureCerts(true); options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.ACCEPT); options.setExperimentalOption("excludeSwitches",Arrays.asList("disable-popup-blocking")); //threadLocalDriver.set(new RemoteWebDriver(new URL(url),options)); driver = new RemoteWebDriver(new URL(url),options); driver.manage().window().maximize(); }
请问Linux环境下是否有可替代Robot类的方案?
内容的提问来源于stack exchange,提问作者RISHI KHANNA
相关产品推荐
相关产品推荐

