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

Java 使用Robot类删除浏览器历史记录,java,selenium,awt,browser-history,awtrobot,Java,Selenium,Awt,Browser History,Awtrobot,我正在使用Selenium对我的网页进行A/B测试,但不知何故,我没有得到我应该得到的不同体验。 我尝试使用 driver.manage().deleteAllCookies() ; 但这似乎不起作用 我认为一个解决方法是使用和模拟浏览器历史记录,使用按键删除。代码如下: public static void main(String args[]) { WebDriver driver = new FirefoxDriver(); driver.get("http

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

driver.manage().deleteAllCookies() ;
但这似乎不起作用

我认为一个解决方法是使用和模拟浏览器历史记录,使用按键删除。代码如下:

  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浏览器中打开“历史记录”对话框,但不会按enter键执行删除操作,并且会一直被卡住。执行此任务应该做些什么?除了机器人,还有其他方法可以实现这一点吗?请建议


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

让我用windows操作系统和Firefox作为浏览器来回答这个问题。对其他操作系统遵循相同的逻辑


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

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

编写一个小的javautil(或者任何你有的语言),然后清理目录

维伦德

您可以使用而不是AutoIT

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


希望这对您有所帮助

您是否尝试过:
driver.manage().deleteAllCookies()
哦,是的。这不会删除历史。已编辑该问题。但是,由于Selenium使用默认的新配置文件,它将如何删除通过Selenium打开的firefox配置文件的历史记录?%APPDATA%\Mozilla\firefox\Profiles文件夹包含所有配置文件,每个配置文件都有自己的历史记录和缓存