Я использую Selenium для загрузки нескольких PDF. Чтобы получить доступ к PDF, я использую метод .get () WebDriver , а вместо открытия предварительного просмотра я загружаю PDF непосредственно через настройки FirefoxProfile . Тем не менее, WebDriver всегда застрял, а остальная часть кода больше не выполняется. Я думаю, что это потому, что WebDriver ожидает загрузки новой страницы и ожидает. Поскольку мне нужно сделать это для каждого файла, мне было интересно, может быть, может быть более элегантный способ, не бросая TimeOutException .
Пример кода:
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import java.time.Duration;
public class TestStuff {
private static final String FIREFOX_DRIVER_PATH = System.getProperty("user.dir") + "\\geckodriver.exe";
public static void main(String[] args){
System.setProperty("webdriver.gecko.driver", FIREFOX_DRIVER_PATH);
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.alwaysOpenPanel", false);
firefoxProfile.setPreference("browser.download.dir", System.getProperty("user.dir") );
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
firefoxProfile.setPreference("pdfjs.disabled", true);
firefoxProfile.setPreference("plugin.scan.Acrobat", "99.0");
firefoxProfile.setPreference("plugin.scan.plid.all", false);
FirefoxOptions options = new FirefoxOptions();
options.addPreference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0");
options.setProfile(firefoxProfile);
WebDriver driver = new FirefoxDriver(options);
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(2));
try {
driver.get("https://freetestdata.com/wp-content/upl ... KB_PDF.pdf");
} catch(TimeoutException e) {
System.out.println("Timeout occurred");
}
driver.close();
System.out.println("Test done");
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... get-method