使用Robot Class删除浏览器历史记录

时间:2015-05-18 07:34:11

标签: java selenium awt browser-history awtrobot

我正在使用Selenium进行A / B测试我的网页,但不知怎的,我没有得到我应该的不同体验。 我尝试使用

删除cookie
driver.manage().deleteAllCookies() ;

但这似乎不起作用。

我认为解决方法是使用Robot.java并使用击键模拟浏览器历史记录删除。这是代码:

  public static void main(String args[]) {
    WebDriver driver = new FirefoxDriver();
    driver.get("http://booking.com");
    Keyboard keyboard = ((RemoteWebDriver) driver).getKeyboard();
    keyboard.pressKey(Keys.COMMAND);
    keyboard.pressKey(Keys.SHIFT);
    keyboard.pressKey(Keys.DELETE);
    keyboard.releaseKey(Keys.DELETE);
    keyboard.releaseKey(Keys.SHIFT);
    keyboard.releaseKey(Keys.COMMAND);
    try {
        Thread.sleep(5000);
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (AWTException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    keyboard.pressKey(Keys.ENTER);
    keyboard.releaseKey(Keys.ENTER);
    Alert alert = driver.switchTo().alert();
    alert.accept();
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("done clering history");
}

这会在我的firefox浏览器中打开历史记录对话框,但不会按回车键执行删除并保持卡住状态。应该怎么做才能完成这项任务?除了机器人之外还有其他办法实现这一目标吗?请建议。

注意:我使用的是Mac,但没有找到AutoIt的替代品。

2 个答案:

答案 0 :(得分:0)

让我用Windows操作系统和Firefox浏览器给你答案。对于其他操作系统遵循相同的逻辑

在Windows FF中,将历史记录存储在%APPDATA%\ Mozilla \ Firefox \ Profiles文件夹下名为places.sqlite的文件中。关闭浏览器后尝试删除它。

尝试机器人会引入鼠标点击位置的不确定性,这也是一个漫长的过程。

编写一个小型Java util(或者您拥有的任何语言),只需清理目录。

virender http://toolsqa.com

答案 1 :(得分:0)

您可以使用SIKULI代替AutoIT。

Sikuli自动化您在屏幕上看到的任何内容。它使用图像识别来识别和控制GUI组件。当无法轻松访问GUI的内部或源代码时,它非常有用。

希望这有助于你