t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f74892e7430> #<Tag:0x00007f74892e7318> #<Tag:0x00007f74892e71b0> #<Tag:0x00007f74892e7048>

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

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

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

самый некрасивый вариант но работающий
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

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

ну так статик переменная инититься сразу при “запуске” класса соотвественно у тебя драйвер инититься и пробует открить окно без засетаного геко
Переделать нужно, создавай драйвер в @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();

Ошибки:

  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