Eu quero construir um jar executável que usa selênio. Eu estou tentando fazer isso usando shadowJar com as dependências de selênio e selênio motorista cromo. build.gradle:
group 'selenium.test'
version '1.0'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1'
}
}
apply plugin: 'java'
apply plugin: 'com.github.johnrengelman.shadow'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
jar{
manifest{
attributes 'Main-Class': 'Test'
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
dependencies {
compile group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '3.6.2'
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59'
compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '3.141.59'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
Mas quando tento executar o jar resultando eu recebo o seguinte erro
Exception in thread "main" java.lang.IllegalStateException: O caminho para o executável do condutor deve ser definido pela propriedade do sistema webdriver.chrome.driver;
Por que isso acontece apesar da dependência chromewebdriver indicada?
a Principal:
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
System.out.println(driver.getTitle());
}
O meio de mensagem de erro que você precisa para definir a localização do seu executável chromedriver como propriedade do sistema. Você pode fazer isso manualmente ou automatizado com a biblioteca io.github.bonigarcia.webdrivermanager que já está em suas dependências.
WebDriverManager
Adicione o seguinte linha ao seu método principal antes de criar uma instância do ChromeDriver.
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
Isso funciona semelhante para outros motoristas também.
Manual
O método manual seria semelhante a seguir:
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();