在使用SafariDriver开始新测试之前清除cookie

时间:2013-09-29 18:00:35

标签: java selenium safaridriver

有没有人知道在运行SafariDriver时如何在新的测试开始时清除缓存?我已经尝试使用java机器人来按键命令+选项+ e,但这似乎不起作用。它不关注浏览器。

机器人r =新机器人();

try {
    Robot robot = new Robot();

    r.keyPress(KeyEvent.META_MASK);
    r.keyPress(KeyEvent.VK_META);
    r.keyPress(KeyEvent.VK_E);
    r.keyRelease(KeyEvent.VK_E);
    r.keyRelease(KeyEvent.VK_META);
    r.keyRelease(KeyEvent.META_MASK);

} catch (AWTException e) {
    e.printStackTrace();
}

我也试过做一个actions.builder方法,但这似乎不起作用

    String clearCache = Keys.chord(Keys.CONTROL, Keys.COMMAND, "E");

    Actions builder = new Actions(browser);

    builder.sendKeys(clearCache);

    Action clearCacheAction = builder.build();

    clearCacheAction.perform();

我也研究过使用SafariDriver选项,但是我的java并不完全理解如何实现它。以下是我一直在尝试使用的代码。我创建了一个SafariOptions类,并尝试在我的@before类中实例化它。

package test

import org.openqa.selenium.safari.SafariDriver;

public class SafariOptions extends SafariDriver {
    private static SafariOptions ourInstance = new SafariOptions();

    public static SafariOptions getInstance() {
        return ourInstance;
    }

    public void setUseCleanSession(boolean useCleanSession){

    }

    public SafariOptions() {

         boolean useCleanSession = true;
    }
}

@Before
    public void createDriver() {

        assumeTrue(isSupportedPlatform());
        browser = new SafariDriver();
        SafariDriver options = new SafariOptions();
}

在每次测试运行中似乎都没有清除Safari缓存。

1 个答案:

答案 0 :(得分:1)

为所有想知道的人提供快速简便的解决方案。

将以下代码添加到.sh文件中以root。

killall cookied
rm -rf ~/Library/Caches/com.apple.Safari/*
rm -rf ~/Library/Safari/LocalStorage/*
rm -rf ~/Library/Cookies/*

在@Before

中调用该文件

运行时运行时= Runtime.getRuntime();    的Runtime.exec( “file.sh”);

System.out.println(“Cookies Removed”);