Я только что попробовал следующий пример кода, используя TestNG:
package tyu;
import java.util.concurrent.TimeUnit;
import org.testng.annotations.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class tyu {
private WebDriver driver;
private String baseUrl;
@BeforeMethod
public void setUp() throws Exception {
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\geckodriver-v0.19.0-win64\\geckodriver.exe");
driver = new FirefoxDriver();
baseUrl = "https://www.google.com";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testUntitled() throws Exception {
driver.get(baseUrl + "/");
driver.findElement(By.name("q")).clear();
driver.findElement(By.name("q")).sendKeys("apple");
driver.findElement(By.name("btnK")).click();
}
@AfterMethod[enter image description here][1]
public void tearDown() throws Exception {
driver.quit();
}
}
Следующий случай для данных, управляемых с использованием Excel:
package aa;
import java.io.FileInputStream;
import jxl.Sheet;
import jxl.Workbook;
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;
public class A
{
Sheet s;
WebDriver driver = new FirefoxDriver();
@Before
public void setUp()
{
System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\geckodriver-v0.19.0-win64\\geckodriver.exe");
driver = new FirefoxDriver();
}
@Test
public void searchGoogle() throws Exception
{
FileInputStream fi = new FileInputStream("F:\\selenium gateway\\gmail.xls ");
Workbook w = Workbook.getWorkbook(fi);
s = w.getSheet(0);
for(int row=0; row <=s.getRows();row++)
{
String search = s.getCell(0, row).getContents();
String search1 = s.getCell(1, row).getContents();
System.out.println("search "+search);
driver.get("http://www.gmail.co.in");
driver.findElement(By.id("Email")).clear();
driver.findElement(By.id("Email")).sendKeys(search);
driver.findElement(By.id("next")).click();
driver.findElement(By.id("Passwd")).sendKeys(search1);
driver.findElement(By.id("signIn")).click();
Thread.sleep(3000);
}
}
@After
public void tearDown()
{ driver.quit(); System.exit(0);
}
}
Ошибка:
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:754)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124)
at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:41)
at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:115)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:329)
at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:207)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:103)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:99)
at aa.A.<init>(A.java:15)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
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:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Я не могу получить результаты теста в вышеуказанных случаях. как я могу решить эту проблему?