2016-05-06 4 views
-1

Я использую uiautomator dumpWindowHierarchy (...), чтобы выгрузить дерево представления текущего дисплея устройства. Однако, похоже, я не могу изменить каталог сохранения для сбрасываемых XML-файлов. Ниже приведен код, но он сохраняет .xml-файл в папку/data/local/tmp/local/tmp. Переменная «dumpXml» - это просто имя файла, например. "Test.xml"uiautomator dumpWindowHierarchy (...) не может изменить каталог дампа

public void dumpView(String dumpXml) { 
    final File dump = new File(new File(Environment.getDataDirectory(), "local/tmp"), dumpXml); 

    dump.mkdirs(); 
    if (dump.exists()) { 
     dump.delete(); 
    } 
    try { 
     getUiDevice().dumpWindowHierarchy(dumpXml); 
     Log.i(TAG, String.format("UI hierarchy: " + dumpXml)); 
    } catch (Exception e) { 
     testCaseAssertion("ERROR: did not dump a view file"); 
    } 
} 

Если изменить new File(new File(Environment.getDataDirectory(), "local/tmp"), dumpXml); в другую папку, например, new File("sdcard/Test"), dumpXml);, тогда я не смог найти сброшенный .xml-файл.

Может кто-нибудь объяснить мне, почему? Как я могу изменить сохраненный каталог сбрасываемого XML-файла?

+0

Какую строку вы передаете в dumpView (...)? например Какова ценность dumpXml? –

+0

Похоже, вы создаете новый каталог (переменная 'дамп'), но вы не обновляете значение, которое вы передаете в dumpWindowHierarchy (..) –

+0

'public void dumpWindowHierarchy (String fileName)' устарело. Вместо этого используйте 'dumpWindowHierarchy (File)' или 'dumpWindowHierarchy (OutputStream)'. –

ответ

0

Вам необходимо передать полный путь к dumpWindowHierarchy (..), если вы хотите, чтобы он оказался на SD-карте.

Прямо сейчас вы вызываете dumpWindowHierarchy ("test.xml"), который является относительным путем. По умолчанию UI Automator будет использовать каталог, возвращенный Context.getFileStreamPath(..), если полный путь не указан.