Получение ошибки Geckodriver, даже если она определена в коде

Я использую 2 класса для моего основного проекта Maven и Selenium -openGmail. Я использую Selenium 3.5 с Firefox 47.0.1 и Gecodriver 0.18.

Мой основной класс это:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class MainClass {

    WebDriver driver = new FirefoxDriver();

    public void setup() {
        String Path_GecoDriver="C:/Personal/Selenium/setup/geckodriver-v0.18.0-win64";
        System.setProperty("webdriver.firefox.marionette", Path_GecoDriver+"/geckodriver.exe");
        System.setProperty("webdriver.gecko.driver", Path_GecoDriver+"/geckodriver.exe");

            }
    public void OpenBrowser() {
        String url="http://google.co.in";
        driver.get(url);
    }
    public void LoginGmail() throws InterruptedException {
        String username ="username";
        String passwd = "passwd";
        driver.findElement(By.linkText("Gmail")).click();
        driver.findElement(By.id("identifierId")).sendKeys(username);
        WebElement cli=driver.findElement(By.xpath("//*[text()='Next']"));
        cli.click();
        Thread.sleep(1000);
        driver.findElement(By.xpath("//input[@name='password']")).sendKeys(passwd);
        driver.findElement(By.xpath("//*[text()='Next']")).click();
    }
    public void CloseBrowser() {
                driver.close();
    }
}

Мой другой класс:-

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestngClass {

MainClass mc=new MainClass();

@Before
public void sp() {
mc.setup();
mc.OpenBrowser();
}

@Test
public void LG() throws InterruptedException {
            mc.LoginGmail();
}
@After
public void CB() {
    mc.CloseBrowser();
}
}

Я получаю ошибку

java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information

Я попытался выполнить этот тест, поместив мой System.setProperty (prop, path/to/driver) в мой @Before и @ test, но без изменений, я все еще получаю ошибку.

Если я использую один класс, то все работает нормально, поэтому я думаю, что помещаю свой system.setProperty в неправильное место.

Я начал с Java и Selenium совсем недавно. Я даже пытался поместить exe-драйвер моего Gecko в src/main/resources моего проекта Maven, как указано в In System.setProperty ("webdriver.gecko.driver", ""), что подразумевается под "Путь к вашему WebDriver"?

1 ответ

Решение

Вы установили свойство два раза, как показано ниже:

  System.setProperty("webdriver.firefox.marionette", Path_GecoDriver+"/geckodriver.exe");
  System.setProperty("webdriver.gecko.driver", Path_GecoDriver+"/geckodriver.exe");

Удалить:-

System.setProperty("webdriver.firefox.marionette", Path_GecoDriver+"/geckodriver.exe");

Другое дело, что вы должны установить его перед созданием экземпляра Firefox. Сначала вы должны определить экземпляр, а затем настраиваете предпочтения.

Попробуйте что-то вроде ниже: -

 WebDriver driver =null;

  public void setup() {
      String Path_GecoDriver="C:/Personal/Selenium/setup/geckodriver-v0.18.0-win64";
      System.setProperty("webdriver.gecko.driver", Path_GecoDriver+"/geckodriver.exe");
      driver= new FirefoxDriver();

}

Надеюсь, это поможет вам:)

Другие вопросы по тегам