Добрый день! Пишу тесты на связке java+selenium+junit.
Столкнулся с проблемой при переходе на версию Selenium 3.x : при запуске тестов получаю ошибку java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; , хотя geckodriver добавлен в Path и переменные среды
В папку с селениумом положи…
То есть в корневую папку проекта?
проверь что возвращает ли System.getProperty(“webdriver.gecko.driver”).
Если там нету начения, тогда задай путь сам. например:
System.setProperty(“webdriver.gecko.driver”, “C:\GeckoDriver\geckodriver.exe”);
System.setProperty(“webdriver.gecko.driver”,“D:\SeleniumHQ\gecodriver\geckodriver.exe”);
- Неважно где лежит драйвер
- Если прописываешь Properties в самом тесте то нужно указывать путь к драйверу, включая название драйвера с рассширением: System.setProperty(“webdriver.gecko.driver”, “C:\GeckoDriver\geckodriver.exe”);
- Если прописываешь в среде, то нужно указать путь к драйверу. Сам драйвер не нужно: C:\GeckoDriver\
- Перезагрузись и будет счастье )
Удачи
не помогло ни указание проперти, ни прописывание в среде
самый некрасивый вариант но работающий
System.setProperty(“webdriver.gecko.driver”, “C:\GeckoDriver\geckodriver.exe”);
вставить перед инициализацией драйвера, к примеру в @Before
Так не бывает.
Попробуй в cmd просто набрать geckodrvier - работает?
для Selenium 3.4 gecko 0.16 рекомендуеться … если maven проект то положи куда в resources и System.setProperty(“webdriver.gecko.driver”, “src/main/resources/drivers/win/gecko.exe”) и обузательно проверь что сам екзешник права на запуск, чтение имеет в пропертях
Да, работает. Но тесты его не видят.
качай файл отдельно 0.16 версии и ложи в сорси
Всем спасибо, решил проблему.
Рискну предположить, что проблема была в одном “” при указании пути до драйвера?
нет, проблема была в правах администратора для доступа в корень диска)
@Taras, положил экзешник в папку с проектом и права проверил - не помогает, выскакивает та же ошибка, что и в первом посте. Главное, если не использовать всякие ж-юниты и тестнг, то достаточно указания setProperty
со ссылкой на любое место на диске и все нормально работает. Есть еще какие-то варианты решения этой проблемы?
Junit i Testng 100% ни при чем, ето просто тестовие фреймворки. Покажи код как сетаешь gecko driver
package Google;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;
public class GoogleTest {
static WebDriver driver = new FirefoxDriver();
@Test
public void googleSearchText() {
System.setProperty("webdriver.gecko.driver", "e:\\Autogecko\\Udemy\\src\\test\\resources\\Geckodriver 0.16.1\\geckodriver.exe");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
driver.get("https://www.google.com/ncr");
driver.findElement(By.name("q")).sendKeys("Selenium", Keys.ENTER);
}
@AfterTest
public static void closeDown() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.close();
}
}
ну так статик переменная инититься сразу при “запуске” класса соотвественно у тебя драйвер инититься и пробует открить окно без засетаного геко
Переделать нужно, создавай драйвер в @BeforeMethod и перед его созданием засетай gecko
Пробовал это раньше, но в BeforeMethod (бефортест, бефоркласс) гекко не сетается…
@BeforeMethod
System.setProperty("webdriver.gecko.driver", "e:\\Autogecko\\Udemy\\src\\test\\resources\\Geckodriver 0.16.1\\geckodriver.exe");
static WebDriver driver = new FirefoxDriver();
Ошибки:
- The annotation @BeforeMethod is disallowed for this location
- Multiple markers at this line
- Syntax error, insert “)” to complete MethodDeclaration
- Syntax error on token “,”, < expected
- Syntax error, insert “Identifier (” to complete MethodHeaderName
- Syntax error, insert “SimpleName” to complete QualifiedName
- Syntax error on token “.”, @ expected after this token