Estou tentando executar um determinado script feito em Java (utilizando selenium), no Eclipse, mas está sendo apresentado erro quando abri o browser e preenche alguns campos, alguém sabe o que pode ser?
1491746449970 geckodriver INFO Listening on 127.0.0.1:40349
1491746450866 mozprofile::profile INFO Using profile path C:\Users\DANILO~1\AppData\Local\Temp\rust_mozprofile.pCL9dRHY3Wzf
1491746450871 geckodriver::marionette INFO Starting browser C:\Program Files\Mozilla Firefox\firefox.exe with args []
1491746451211 geckodriver::marionette INFO Connecting to Marionette on localhost:55736
1491746453930 Marionette INFO Listening on port 55736
abr 09, 2017 11:00:58 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFORMAÇÕES: Detected dialect: W3C
JavaScript warning: http://www.buscacep.correios.com.br/sistemas/buscacep/buscaLogBairro.cfm, line 161: unreachable code after return statement
[Child 6980] ###!!! ABORT: Aborting on channel error.: file c:/builds/moz2_slave/m-rel-w64-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2056
abr 09, 2017 11:01:02 AM org.openqa.selenium.os.UnixProcess destroy
GRAVE: Unable to kill process with PID 162
1 curtida
Cadê o código? Já depurou? E indique exatamente a linha que dá erro.
1 curtida
O código é este:
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebElement;
public class EncontrarElementos
{
private WebDriver driver;
@Before //Para acessar o nosso blog antes da execução de cada teste
public void setUp()
{
driver = new FirefoxDriver();
driver.get("http;//www.taketest.com.br/");
driver.manage().window().maximize();
}
@Test
public void encontrarElementos()
{
WebElement menusobre = driver.findElement(By.id("menu-item-19"));
assertTrue(menusobre.getText().contains("SOBRE"));
WebElement topicosrecentes = driver.findElement(By.id("recent-posts-2"));
assertTrue(topicosrecentes.isDisplayed());
WebElement tagwebdriver = driver.findElement(By.className("tag-link-32"));
assertTrue(tagwebdriver.getText().equals("Webdriver"));
}
@Test
public void atualizarPagina()
{
driver.navigate().refresh();
}
@After
public void fecharPagina()
{
driver.quit();
}
}
1 curtida
Só de olhar o início, está errado o endereço. O Firefox não vai conseguir abrir isso: “http;//www.taketest.com.br/”, pois tem um “;” onde deveria ser “:”.
Olá, obrigado pela resposta, eu alterei e continua dando erro, java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
at com.google.common.base.Preconditions.checkState(Preconditions.java:738)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:111)
at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:38)
at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:112)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:302)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:233)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:125)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:121)
at EncontrarElementos.setUp(EncontrarElementos.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
java.lang.NullPointerException
at EncontrarElementos.fecharPagina(EncontrarElementos.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
O código é este:
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebElement;
public class EncontrarElementos
{
private WebDriver driver;
@Before //Para acessar o nosso blog antes da execução de cada teste
public void setUp()
{
driver = new FirefoxDriver();
driver.get("http://www.taketest.com.br/");
driver.manage().window().maximize();
}
@Test
public void encontrarElementos()
{
System.setProperty("webdriver.gecko.driver","C:/Users/Danilo Soarez/Desktop/Download/geckodriver.exe");
WebElement menusobre = driver.findElement(By.id("menu-item-19"));
assertTrue(menusobre.getText().contains("SOBRE"));
WebElement topicosrecentes = driver.findElement(By.id("recent-posts-2"));
assertTrue(topicosrecentes.isDisplayed());
WebElement tagwebdriver = driver.findElement(By.className("tag-link-32"));
assertTrue(tagwebdriver.getText().equals("Webdriver"));
}
@Test
public void atualizarPagina()
{
driver.navigate().refresh();
}
@After
public void fecharPagina()
{
driver.close();
}
}
Você depurou? Em que linha exatamente dá o erro?
E esta linha do setProperty que voce adicionou agora deve ser chamada antes de instanciar o WebDriver, desta forma:
System.setProperty("webdriver.gecko.driver","C:\\path\\geckodriver.exe");
driver = new FirefoxDriver();
....
Opa! boa tarde,
realmente o setProperty deve ser indicado conforme o javaflex informou antes de ser iniciado.
faça um teste utilizando o chrome também, realize o download do chromedriver e indique o caminho para execução do mesmo.
uma segestão é dar uma olhada nesse canal:
https://www.youtube.com/channel/UCiBvO4aMxNDC8O-bRlXAmUw
pode te ajudar!