t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как чистить "мусор" после запусков тестов?


(romal) #1

При каждом запуске теста FireFox создает новый профайл. При этом диск быстро засоряется. Как это избежать кроме как чистить вручную?

 


(Taras) #2

public void DeleteAllVisibleCookies()
{
driver.Manage().Cookies.DeleteAllCookies();
}


(romal) #3

Есть такое.. не совсем то что нужно

Вот я наблюдаю за свободным местом на винчестере. Перед выполнением одного теста было 356 Мб свободно, перед завершением 324 Mb, после завершения (и удаления печенек) - 338 Mb. В "..\AppData\Local\Temp" папки, которые соответствуют запускам тестов, и они не удаляются.

 


(Taras) #4

так это у вас с Файрфокса темп файлы засоряют

TIF Cleaner в помощь)

погуглите как какой то батник написать как удалять TIF-ки и запускайте командно с тестов, примерно так:

 

Thread thread = new Thread(){
   public void run(){
    try {
         String[] commands = new String[]{};
         commands = new String[]{" \\путь к батнику "}; //location of the autoit executable
         Runtime.getRuntime().exec(commands);
      } catch (IOException e) {}
   } 
};
thread.start();

(romal) #5

Спасибо за наводку, помогла.

Вот содержимое батника: 

For /F "Delims=" %%I In ('Dir %USERPROFILE%\AppData\Local\Temp\ /AD /B') Do RD /S /Q "%USERPROFILE%\AppData\Local\Temp\$anonymous*"

Но решили все таки удалять файлы через код. Вот так:

        String userHome = System.getProperty("user.home");
        File tempFolder = new File(userHome + "\\AppData\\Local\\Temp\\");

        File[] filenames = tempFolder.listFiles();
        for (File file : filenames)  {
            System.out.println("Processing file with name: " + file.getName());
            if (file.getName().startsWith("anonymous")) {        //  $anonymous* - FireFox folders
                try {
                    FileUtils.cleanDirectory(file);

                    System.out.println("Deleting file with name: " + file.getName());
                    boolean result = file.delete();
                    System.out.println("File with name: " + file.getName() + " deleted: " + result);

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

Спасибо.


(Taras) #6

ай, да не за что, всегда рад !)


(snark) #7

Ну можно же селениуму один конкретный, специально подготовленный профиль назначить, тогда он не будет плодить лишних сущностей.


(Taras) #8

А можешь расказать как сделать ?


(katmoon) #9

Чтобы создать отдельный профайл в Фаерфоксе для запуска тестов, нужно запустить Фаерфокс из консоли с этими параметрами:

firefox.exe -ProfileManager -no-remote

Чтобы запустить Селениум Сервер с определенным профилем Фаерфокса:

java -jar selenium-server-standalone-2.15.0.jar -firefoxProfileTemplate "path_to_new_profile"

 


(snark) #10

Да, товарищ katmoon все верно написал.
Я убрал из того профиля все лишнее (autoupdate например) и сохранил в архив. А подключаю все антом:
{syntaxhighlighter brush:xml}


		<target name="start-selenium-server" depends="prepareFirefox">
			<java jar="lib/selenium-server-standalone-2.12.0.jar" fork="true" spawn="true">
				<arg line="-timeout 30" />
				<arg line="-port 5555" />
				<arg line=" -userExtensions" />
				<arg line=" ${basedir}\src\test\user-extensions.js" />
				<arg line=" -firefoxProfileTemplate" />
				<arg line=" ${firefoxProfileDir}\firefoxProfile" />
				<jvmarg value="-Dhttp.proxyHost=proxy.corporate.com" />
				<jvmarg value="-Dhttp.proxyPort=3128" />
			</java>
		</target>

{/syntaxhighlighter}


(Alexander Ivanovsky) #11

File profileDir = new File("path/to/top/level/of/profile");
FirefoxProfile profile = new FirefoxProfile(profileDir);
WebDriver driver = new FirefoxDriver(profile);