3

我正在尝试在不同的浏览器驱动程序中运行 Fluentlenium。我想我需要从 Fluentlenium 配置 getDefaultDriver() 但我不完全确定如何做到这一点。任何示例代码都会很棒。这是我的代码,它不起作用。我在 Eclipse 中收到的消息是:

“java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;有关详细信息,请参阅http://code.google.com/p/selenium/wiki/ChromeDriver。最新版本可以从http://code.google.com/p/chromedriver/downloads/list下载 在 com.google.common.base.Preconditions.checkState(Preconditions.java:176) 在 org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:105) 在 org.openqa.selenium.chrome.ChromeDriverService .createDefaultService(ChromeDriverService.java:75) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:107) 在 com.picklist.tests.PicklistCreate.(PicklistCreate.java:32) 在 sun.reflect.NativeConstructorAccessorImpl。 newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java: 525) 在 org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:195) 在 org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:244) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.BlockJUnit4ClassRunner。 methodBlock(BlockJUnit4ClassRunner.java:241) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner $3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner $1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit。 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 上 org.junit.internal.runners 上的 runners.ParentRunner.access$000(ParentRunner.java:53)。statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java: 50) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt .internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.runTests(RemoteTestRunner. java:467) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.run(TestExecution.java:38) 处运行(JUnit4TestReference.java:50)。 java:467) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

"

我的代码如下:

public WebDriver driver = new ChromeDriver();

// Overrides the default driver
@Override
public WebDriver getDefaultDriver() {
    System.setProperty("webdriver.chrome.driver", "C:/chromeDriver/chromedriver.exe"); // Set for ChromeDriver
    //return driver;
    return driver;
}

如果我执行以下代码,它可以工作,但是不再定义驱动程序,并且我得到了一个使用 driver.xxx 的大量 od 代码:

// Overrides the default driver
@Override
public WebDriver getDefaultDriver() {
    return new ChromeDriver();
}
4

3 回答 3

3

这是我解决这个问题的方法:

公共 WebDriver 驱动程序;

// Overrides the default driver
@Override
public WebDriver getDefaultDriver() {
    System.setProperty("webdriver.chrome.driver", "C:/chromeDriver/chromedriver.exe"); // Set for ChromeDriver
    driver = new ChromeDriver();
    return driver;
}
于 2013-08-21T21:28:19.427 回答
1

FluentTest中没有getDefaultDriver,可以使用以下代码:

@Override
public WebDriver newWebDriver() {
    System.setProperty("webdriver.chrome.driver", "path-to-chrome-driver/chromedriver");
    Map<String, Object> chromeOptions = new HashMap<String, Object>();
    chromeOptions.put("binary", "/usr/bin/chromium-browser");
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
    return new ChromeDriver(capabilities);
}
于 2017-07-12T08:47:28.277 回答
0

具有createDriver()被每种类型的驱动程序覆盖的抽象函数。每个驱动程序都应返回一个正确配置的驱动程序,然后将其存储,并在您调用时返回getDefaultDriver();

于 2013-07-26T17:02:09.723 回答