Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Geckodriver не находится при запуске тестов

geckodriver
junit
java
webdriver
Теги: #<Tag:0x00007fedb9b7c268> #<Tag:0x00007fedb9b7c088> #<Tag:0x00007fedb9b7a3c8> #<Tag:0x00007fedb9b79f40>

(Алик Гилиздинов) #1

Добрый день! Пишу тесты на связке 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 и переменные среды


(Ray Romanov) #2

В папку с селениумом положи…


(Алик Гилиздинов) #3

То есть в корневую папку проекта?


(Dema W) #4

проверь что возвращает ли System.getProperty(“webdriver.gecko.driver”).
Если там нету начения, тогда задай путь сам. например:
System.setProperty(“webdriver.gecko.driver”, “C:\GeckoDriver\geckodriver.exe”);


(Дима ТОК) #5

System.setProperty(“webdriver.gecko.driver”,“D:\SeleniumHQ\gecodriver\geckodriver.exe”);


(Dmitry Nesterov) #6
  1. Неважно где лежит драйвер
  2. Если прописываешь Properties в самом тесте то нужно указывать путь к драйверу, включая название драйвера с рассширением: System.setProperty(“webdriver.gecko.driver”, “C:\GeckoDriver\geckodriver.exe”);
  3. Если прописываешь в среде, то нужно указать путь к драйверу. Сам драйвер не нужно: C:\GeckoDriver\
  4. Перезагрузись и будет счастье )
    Удачи

(Алик Гилиздинов) #7

не помогло ни указание проперти, ни прописывание в среде


(Ramon Menezes) #8

самый некрасивый вариант но работающий
System.setProperty(“webdriver.gecko.driver”, “C:\GeckoDriver\geckodriver.exe”);
вставить перед инициализацией драйвера, к примеру в @Before


(Bolatbek) #9

Так не бывает.
Попробуй в cmd просто набрать geckodrvier - работает?


(Taras) #10

для Selenium 3.4 gecko 0.16 рекомендуеться … если maven проект то положи куда в resources и System.setProperty(“webdriver.gecko.driver”, “src/main/resources/drivers/win/gecko.exe”) и обузательно проверь что сам екзешник права на запуск, чтение имеет в пропертях


(Алик Гилиздинов) #11

Да, работает. Но тесты его не видят.


(Taras) #12

качай файл отдельно 0.16 версии и ложи в сорси


(Алик Гилиздинов) #13

Всем спасибо, решил проблему.


(Николай Анатольевич) #14

Рискну предположить, что проблема была в одном “” при указании пути до драйвера?


(Алик Гилиздинов) #15

нет, проблема была в правах администратора для доступа в корень диска)


(Andrey) #16

@Taras, положил экзешник в папку с проектом и права проверил - не помогает, выскакивает та же ошибка, что и в первом посте. Главное, если не использовать всякие ж-юниты и тестнг, то достаточно указания setProperty со ссылкой на любое место на диске и все нормально работает. Есть еще какие-то варианты решения этой проблемы?


(Taras) #17

Junit i Testng 100% ни при чем, ето просто тестовие фреймворки. Покажи код как сетаешь gecko driver


(Andrey) #18

@Taras,

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();
	}
	
}

(Taras) #19

ну так статик переменная инититься сразу при “запуске” класса соотвественно у тебя драйвер инититься и пробует открить окно без засетаного геко
Переделать нужно, создавай драйвер в @BeforeMethod и перед его созданием засетай gecko


(Andrey) #20

Пробовал это раньше, но в BeforeMethod (бефортест, бефоркласс) гекко не сетается…

@BeforeMethod
	System.setProperty("webdriver.gecko.driver", "e:\\Autogecko\\Udemy\\src\\test\\resources\\Geckodriver 0.16.1\\geckodriver.exe");
	static WebDriver driver = new FirefoxDriver();

Ошибки:

  1. The annotation @BeforeMethod is disallowed for this location
  2. 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