tebeka / selenium

Selenium/Webdriver client for Go
MIT License
2.51k stars 410 forks source link

Couldn't find `class org.openqa.grid.selenium.GridLauncherV3` #322

Closed amirrmonfared closed 8 months ago

amirrmonfared commented 8 months ago

Hey guys, I want to run a Selenium server but I have this strange issue Error: Could not find or load main class org.openqa.grid.selenium.GridLauncherV3

I'm using Ubuntu 22.04 and go 1.21.4 and here is the code


const (
    driverPath = "drivers/geckodriver"
)

func setCaps(browser string, headless bool) (selenium.Capabilities, error) {
    switch browser {
    case "firefox":
        return setFirefoxCaps(headless), nil
    default:
        return nil, fmt.Errorf("browser %s not supported", browser)
    }

}

func setFirefoxCaps(headless bool) selenium.Capabilities {
    args := []string{}
    if headless {
        args = append(args, "-headless")
    }
    firefoxCaps := firefox.Capabilities{
        Args: args,
    }
    return selenium.Capabilities{
        "browserName":           "firefox",
        firefox.CapabilitiesKey: firefoxCaps,
    }
}

func startWebDriver(port int, brwoser string, headless bool) (selenium.WebDriver, error) {
    opts := []selenium.ServiceOption{
        selenium.StartFrameBuffer(), // Start an X frame buffer for the browser to run in
        selenium.GeckoDriver(driverPath),
        selenium.Output(os.Stderr), // Output debug information to STDERR
    }
    selenium.SetDebug(true)

    logger.Info("Starting the WebDriver server...")
    service, err := selenium.NewSeleniumService(driverPath, port, opts...)
    if err != nil {
        return nil, fmt.Errorf("error starting the WebDriver server: %w", err)
    }
    defer service.Stop()
    logger.Info("WebDriver server started")

    caps, err := setCaps(brwoser, headless)
    if err != nil {
        return nil, err
    }

    logger.Info("Starting the WebDriver session...")
    wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%d/wd/hub", port))
    if err != nil {
        return nil, err
    }
    logger.Info("WebDriver session started")
    return wd, nil
}
aneesh-aparajit commented 8 months ago

I believe you would have to download the Selenium Jar file from here. Then run the selenium those java files. Should be something like this.

java -jar selenium-server-4.16.1.jar --ext selenium.jar:dir standalone --port 4444