【问题标题】:How to fully close Opera browser via RemoteWebDriver如何通过 RemoteWebDriver 完全关闭 Opera 浏览器
【发布时间】:2018-01-24 20:35:31
【问题描述】:

我正在尝试将 Opera 添加到 Selenium Grid 上的节点,但在关闭 Opera 浏览器时遇到问题。在 Opera 中,关闭浏览器中的最后一个选项卡不会关闭浏览器。相反,它会启动一个叫做快速拨号的东西。这显然是 Opera 中的默认行为。我已尝试禁用快速拨号,但似乎无法阻止此行为。

由于通过 RemoteWebDriver 运行测试,我不能只在 Opera 节点上调用脚本来关闭窗口。

我尝试过传统方法,它会关闭选项卡,但 Opera 会启动一个空的或快速拨号选项卡:

driver.close();
driver.quit();

我尝试过执行一个操作并将密钥发送到 html 正文中:

Actions action = new Actions(driver);
action.sendKeys(driver.findElement(By.xpath("//body")),Keys.CONTROL, Keys.SHIFT, "W");
action.build().perform();
driver.quit();

我也尝试过构建一个动作并将密钥发送到以太:

Actions action = new Actions(driver);
action.sendKeys(Keys.CONTROL, Keys.SHIFT, "W");
action.build().perform();
driver.quit();

有没有人为此“功能”找到合适的解决方法?

【问题讨论】:

  • 你在远程机器上使用什么操作系统?
  • @ShubhamJain Windows Server 2016
  • 你好,尼克。你修好了吗?

标签: selenium selenium-webdriver opera selenium-grid


【解决方案1】:

我找到了解决方法。我的代码在 C# 中

Utility.Instance.KillProcess("opera");
System.Windows.Forms.SendKeys.SendWait("{ESC}");
Utility.Instance.KillProcess("operadriverserver");

希望对你有所帮助。

【讨论】:

  • 感谢 Kapil,但我认为您不能杀死远程机器上的进程。
  • 你好,尼克。你修好了吗?
【解决方案2】:

我找到了this issue

感谢 Kryshtopenko,解决方案是:

  • 对于窗户:

    Runtime.getRuntime().exec("taskkill /f /im opera.exe");

  • 对于 macOS:

    Runtime.getRuntime().exec("pgrep 'Opera' | xargs kill");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多