使用Chrome Driver与Selenium 2

19

我正在尝试使用Chrome驱动程序来执行我的一些测试,这些测试在Firefox中运行得非常完美,但我无法执行它们,我已经验证了要求,包括Chrome的位置、12或更高版本等,但是仍然不能正常工作,调用驱动程序的方法如下:

WebDriver fd = new ChromeDriver();
fd.get("url");

然后搜索一些元素,但什么都不起作用,错误信息如下:

线程中的异常“main” org.openqa.selenium.WebDriverException: 找不到Chrome。请设置 webdriver.chrome.bin 系统信息: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_18' 驱动程序信息: driver.version: ChromeDriver at org.openqa.selenium.chrome.ChromeBinary.getChromeBinaryLocation(ChromeBinary.java:220) at org.openqa.selenium.chrome.ChromeBinary.getCommandline(ChromeBinary.java:121) at org.openqa.selenium.chrome.ChromeBinary.prepareProcess(ChromeBinary.java:67) at org.openqa.selenium.chrome.ChromeBinary.start(ChromeBinary.java:109) at org.openqa.selenium.chrome.ChromeCommandExecutor.start(ChromeCommandExecutor.java:373) at org.openqa.selenium.chrome.ChromeDriver.startClient(ChromeDriver.java:65) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:85) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:25) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:43) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:53) at equifax.qa.test.NewTests.access.main(access.java:11)

如果有人能帮忙就太好了。

这个堆栈跟踪来自 Selenium 的旧版本,在 ChromeDriver 重写之前。一些显示的类已经不存在了。下面给出的建议假定您正在使用更新的版本。 - jarib
你知道如何用Python做这个吗?当我使用Firefox时,我会这样做:如果有Chrome的Python模块吗?来自selenium的导入selenium,导入unittest,时间,re类Untitled(unittest.TestCase): def setUp(self): self.verificationErrors = [] self.selenium = selenium("localhost", 4444, "*chrome", "http://mysite.com/") self.selenium.start() - Rudiger Wolf
已经解决了我上面的问题。我可以用以下任意一个来代替“* chrome”:* firefox,* mock,* firefoxproxy,* pifirefox,* chrome,* iexploreproxy,* iexplore,* firefox3,* safariproxy,* googlechrome,* konqueror,* firefox2,* safari,* piiexplore,* firefoxchrome,* opera,* iehta,* custom。 - Rudiger Wolf
我正在使用Groovy?如何为Groovy提供这个? - ChanGan
我有同样的问题,事实上我把我的问题发布在这里:http://stackoverflow.com/questions/18436156/selenium-possible-upgrade-issue 我很困惑...是Selenium、chromedriver还是其他问题呢? - CHEBURASHKA
7个回答

44

我通过以下方式启动selenium服务器,成功使其工作:

java -jar selenium-server-standalone-2.0rc2.jar -Dwebdriver.chrome.driver=c:\path\to\chromedriver.exe

(我的操作系统是Windows 7的64位版本,使用Chrome 12和Selenium Server RC2)


+1 我尝试使用HtmlUnit,它运行良好:http://stackoverflow.com/questions/18436156/have-chromedriver-features-been-deprecated 我认为问题在于ChromeDriver。 - CHEBURASHKA

14

嗨,我很好奇这个驱动程序与org.openqa.selenium.chrome.ChromeDriver有何不同? - Aravind Yarram
1
ChromeDriver使用chromedriver.exe与Chrome进行交互。org.openqa.selenium.chrome.ChromeDriver仅是语言绑定,允许您与与实际浏览器进行交互的chromedriver.exe进行接口交互。 - Mike Kwan
如果是这种情况,为什么我们还要设置系统属性呢?我们并没有为FireFox设置这个! - Aravind Yarram
我不确定这是否是原因,但ChromeDriver.exe是由Google开发人员而不是WebDriver/Selenium团队开发的,所以我猜测这可能是集成问题。这使得同时开发这两个项目更容易,也许?只是猜测! - Mike Kwan
5
在Selenium 2.0rc3中,该属性应该是"webdriver.chrome.driver"。 - fijiaaron
显示剩余2条评论

5

使用Chrome浏览器请按照以下步骤操作:

步骤1:从此处下载Chrome驱动程序

步骤2:使用Testng框架

@BeforeClass

public void setUp() throws Exception

{ 

    System.setProperty("webdriver.chrome.driver", "D://Work-Selenium//chromedriver_win32//chromedriver.exe");

    driver = new ChromeDriver();

    baseUrl = "http://google.com";

    driver.get(baseUrl);

}

4

只需从[http://code.google.com/p/selenium/downloads/list][1]下载chromedriver_win32_13.0.775.0.zipselenium-server-standalone-2.0rc3.jar

将chromedriver_win32_13.0.775.0.zip解压缩到文件夹中,例如C:/drivers/chrome/,使得chromedriver.exe位于C:/drivers/chrome/chromedriver.exe。

在端口6668上注册节点以对接hub(例如)

java -jar selenium-server-standalone-2.0rc3.jar -role webdriver -hub http://hubUrlHostname:4444/grid/register -port 6668 -browser "browserName=chrome,version=13.0,platform=windows" -Dwebdriver.chrome.driver=C:\drivers\chrome\chromedriver.exe

如果您访问http://hubUrlHostname:4444/grid/console,您应该可以看到 Chrome driver 已注册。

2

为什么我们必须使用提示窗口来运行测试?Selenium 2已经没有提供这个功能了吗? - SeleniumGroopie
你不必运行它。这只是使用它的一种方式,对于连接远程实例时可能非常有用。在本地操作时,你可以设置系统属性并让WebDriver处理启动等操作。 - Mike Kwan
嗨,我很好奇这个驱动程序与org.openqa.selenium.chrome.ChromeDriver有什么不同? - Aravind Yarram

1

您可以设置capabilities来指向要启动的浏览器二进制文件。

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.binary", "/usr/lib/chromium-browser/chromium-browser");

WebDriver driver = new ChromeDriver(capabilities);

例如:Chromium Browser(33.0.1729.0)适用于ChromeDriver 2.7,而不适用于旧版本。

您可以从以下链接中选择所有可用的chromedriver版本:http://chromedriver.storage.googleapis.com/index.html

因此,请尝试使用chromedriver支持的浏览器版本。


0
如果您正在使用Maven项目,请按照以下步骤操作:
  1. 从此链接下载最新的chromedriver.exe。
  2. 在测试中创建一个名为drivers的文件夹。它应该看起来像这样:src/test/resources/drivers
  3. 将chromedriver.exe移动到第2步中上述路径中
  4. 在创建chrome driver对象之前,请使用以下代码

System.setProperty("webdriver.chrome.driver", Thread.currentThread().getContextClassLoader().getResource("drivers/chromedriver.exe").getFile());


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接