2

在 2 天前使用了这个场景并且它工作但一直知道她没有我不知道为什么,我使用 Selenium webdriver 和 junit4 所以这是我的场景以及我如何使用 cmd 运行 chrome-driver 和错误

package com.example.test;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class SearchWithCH {
  private WebDriver driver;
  private String baseUrl;
  private StringBuffer verificationErrors = new StringBuffer();
  @Before
  public void setUp() throws Exception {
    driver = new RemoteWebDriver(DesiredCapabilities.chrome());
    baseUrl = "http://localhost:8080/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }
  @Test
  public void testUntitled() throws Exception {
    driver.get(baseUrl + "/myapp/pages/accueil/login.xhtml#loaded");
    driver.findElement(By.id("login")).clear();
    driver.findElement(By.id("login")).sendKeys("login");
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("password");
    driver.findElement(By.id("loginButton")).click();
    driver.findElement(By.xpath("//*[@id='mainMenu']/ul/li[2]/a")).click();
    driver.findElement(By.xpath("//*[@id='menu_contact_search']")).click();
    driver.findElement(By.id("formRecherche:nom")).clear();
    driver.findElement(By.id("formRecherche:nom")).sendKeys("Jean");
    driver.findElement(By.id("formRecherche:button_recherche")).click();
    try {
      assertTrue(driver.findElement(By.xpath("//*[@id='panel_contact_id_header']/span")).getText().matches("^[\\s\\S]*Contact : 9673 [\\s\\S]*$"));
    } catch (Error e) {
      verificationErrors.append(e.toString());
    }
  }
  @After
  public void tearDown() throws Exception {
    //driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }
}

我正在运行 chrome 驱动程序

> java -jar selenium-server-standalone-2.30.0.jar -Dwebdriver.chrome.driver=C:\Users\lenovo\Desktop\Projet\chromedriver_win_26.0.1383.0\chromedriver.exe

但我有这个错误

> org.openqa.selenium.WebDriverException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list
Command duration or timeout: 130 milliseconds
Build info: version: '2.30.0', revision: 'dc1ef9c', time: '2013-02-19 00:15:57'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_13'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
    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.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:129)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119)
    at com.QD2.Search.SearchWithCH.setUp(SearchWithCH.java:17)
    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:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
    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)
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list
    at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:105)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:75)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:129)
    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.openqa.selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.java:57)
    at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:51)
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:213)
    at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:167)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
4

2 回答 2

2

首先使用以下命令启动 selenium 服务器

java -Dwebdriver.chrome.driver=latest\chromedriver.exe -jar selenium-server-standalone-2.31.0.jar

然后使用以下逻辑创建 chrome 驱动程序实例

System.setProperty("webdriver.chrome.driver", "D:\\selenium\\latest\\chromedriver.exe");
DesiredCapabilities dc=new DesiredCapabilities();
dc.setBrowserName("chrome");
driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),dc);

并使用驱动程序实例运行您的测试用例

driver.get("http://www.google.com");
于 2013-03-15T16:48:10.137 回答
1

在初始化 Chromedriver之前尝试添加代码:

  System.setProperty("webdriver.chrome.driver", "C:\\Users\\lenovo\\Desktop\\Projet\\chromedriver_win_26.0.1383.0\\chromedriver.exe");

编辑 关于您的评论。试试这个:

  • 按 Ctrl + Alt + Del
  • 选择任务管理器
  • 切换到进程
  • 按名称分类
  • 杀死所有“chromedriver”进程
  • 可选:重新启动计算机
  • 再试一次

顺便说一句,你安装了 Chrome 吗?

EDIT2 现在我意识到,您正在使用 RemoteWebDriver!所以你必须像这样启动集线器和节点:

第一个枢纽:

 java -jar lib/selenium-server-standalone-2.31.0.jar -role hub

第二个节点:

java -jar selenium-server-standalone-2.31.0.jar -role node -hub http://localhost:4444/grid/register -maxSession 15 -browser browserName="chrome",version=ANY,platform=WINDOWS,maxInstances=15 -Dwebdriver.chrome.driver=C:\Users\lenovo\Desktop\Projet\chromedriver_win_26.0.1383.0\chromedriver.exe

然后运行你的测试

于 2013-03-15T09:51:29.840 回答