如何通过RemoteWebDriver完全关闭Opera浏览器

时间:2017-08-16 15:47:22

标签: selenium selenium-webdriver opera selenium-grid

我试图将Opera添加到Selenium Grid上的某个节点,但遇到关闭Opera浏览器的问题。在Opera中,关闭浏览器中的最后一个选项卡不会关闭浏览器。它改为启动名为Speed Dial的东西。这显然是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();

是否有人为此功能找到了合适的解决方法'?

2 个答案:

答案 0 :(得分:1)

我找到了this issue

所以感谢Kryshtopenko的解决方案是:

  • 对于Windows:

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

  • 对于macOS:

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

答案 1 :(得分:0)

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

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

希望它会对你有所帮助。