2017-02-26 29 views
8

Pobrałem najnowszą wersję chromu, aby przetestować funkcję bezgłosu.Chromium/Chrome headless - pobieranie pliku nie działa?

Kiedy uruchomić (jako root, rzeczy, bo jestem jeszcze testowania):

./chrome --no-sandbox http://cp7.awardspace.com/speed-test/awardspace-data1mb.zip 

W terminalu GUI, otwiera chromu i pobiera plik.

Jeśli próbuję uruchomić go bez głowy, I wprowadź następujące informacje:

./chrome --no-sandbox --headless http://cp7.awardspace.com/speed-test/awardspace-data1mb.zip 

terminal wysyła jakieś informacje, nie zostanie otwarte okno, ale również: Nie mam plik pobrany wszędzie.

Zbadałem internet i grupy dyskusyjne, aby uzyskać więcej informacji, ale nie mogę znaleźć niczego.

Czy pobieranie plików nie działa w trybie bezgłosu dla Chromium?

Odpowiedz

0

Uwaga: Nie dokładnie odpowiedzieć na to pytanie, ale rozwiązuje problem

Badałem wiele na jak bezgłowe Chrome Pobierz z różnych parametrów/opcji/preferencje, ale nic nie działało. Następnie użyłem standardowego sposobu Java pobierania pliku za pomocą fileutils Apache Commons za

FileUtils.copyURLToFile(URI, FILE); 
0

udało mi się pobrać pliki z chrom bezgłowe dzięki Chrome zdalny interfejs

public void TryEnableFileDownloading(string downloadPath) 
{ 
    TrySendCommand("Page.setDownloadBehavior", new Dictionary<string, object>() 
    { 
     ["behavior"] = "allow", 
     ["downloadPath"] = downloadPath 
    }); 
} 

pełny kod do integracji z selenu można znaleźć tutaj https://github.com/cezarypiatek/Tellurium/blob/master/Src/MvcPages/SeleniumUtils/ChromeRemoteInterface/ChromeRemoteInterface.cs

Więcej informacji o setDownloadBehavior i Chrome Remote interfejsu https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-setDownloadBehavior

+0

Czy możesz opublikować działający kod java dla tego? – Coded9

+0

@ Coded9 Nie napisałem żadnego kodu w java przez ostatnie 8 lat, więc prawdopodobnie zajmie mi to dużo czasu, aby przepisać go z ustawieniem środowiska. Kluczową kwestią jest tutaj dostęp do CommandExecutor, który jest prywatnym polem WebDriver. Nie mam pojęcia, jakie możliwości daje ci Java w zakresie refleksji. Jeśli możesz uzyskać dostęp do członków prywatnych, powinieneś być w stanie z łatwością wdrożyć tę funkcję samodzielnie. Aby uzyskać więcej informacji, sprawdź implementację klasy WebDriverCommandExecuter z mojego repozytorium, które pozwala mi używać ChromeRemoteInterface przez WebDriver – cezarypiatek