JavaFX-Anwendung läuft nicht mit Selenium WebDriver

Adriano10

Bekanntes Mitglied
Java:
public class WebSelenium {
    static String downloadFilePath = "C:\\z";

    public WebSelenium() {

    }

    public void downloadPDFFile(List<String> list) throws InterruptedException {
        //WebDriverManager.chromedriver().setup();
        System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        HashMap<String, Object> chromePrefs = new HashMap<>();
        chromePrefs.put("plugins.always_open_pdf_externally", true);

        chromePrefs.put("download.default_directory", downloadFilePath);
        options.setExperimentalOption("prefs", chromePrefs);
        WebDriver driver = new ChromeDriver(options);

        for (int i = 0; i < list.size(); i++) {
            driver.get("http://asf/nr=" + list.get(i));
            Thread.sleep(5000);
            if (driver.findElement(By.xpath("/html/body/div/div[1]")).getText().equals("Die Suchanfrage wurde erfolgreich verarbeitet")) {
                continue;
            }
            for (int j = 2; j < 6; j++) {
                System.out.println(driver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[" + j + "]/td/a")).getText());
                if (driver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[" + j + "]/td/a")).getAccessibleName().length() > 15) {
                    if (driver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[" + j + "]/td/a")).getAccessibleName().substring(driver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[" + j + "]/td/a")).getAccessibleName().length() - 3).equals("pdf")) {
                        driver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[" + j + "]/td/a")).click();
                    }
                }
            }
        }
    }
}
Code:
public class Controller implements Initializable {

    public static final String FXML = "/fxml/hello-view.fxml";
    static FileChooser chooser1 = new FileChooser();
    static FileChooser chooser = new FileChooser();
    static DirectoryChooser directoryChooser = new DirectoryChooser();
    private List<String> list = new ArrayList<>();
    private WebSelenium web = new WebSelenium();
    @FXML
    private TextField numbers;

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        directoryChooser.setInitialDirectory(new File("C:"));
    }

    public void onSearchInvoicnumber(ActionEvent actionEvent) throws InterruptedException {
        String[] array = numbers.getText().split(",");
        for (String number : array){
            list.add(number.replaceAll("'", "").trim());
        }
        if (list != null) {
            this.web.downloadPDFFile(list);
        }
    }

ich bekomme immer diese schreckliche Fehlermeldung


Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
at com.example.guiforqrcode.Controller.<init>(Controller.java:23)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
at java.base/java.lang.Class.newInstance(Class.java:645)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:936)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:980)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:227)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:752)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2722)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at com.example.guiforqrcode.ScannerManager.showScene(ScannerManager.java:29)
at com.example.guiforqrcode.ScannerManager.initView(ScannerManager.java:22)
at com.example.guiforqrcode.ScannerManager.<init>(ScannerManager.java:18)
at com.example.guiforqrcode.Application.start(Application.java:11)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 29 more
 

Zurück
Oben