在 Selenium 2 中使用 Chrome 驱动程序
Posted
技术标签:
【中文标题】在 Selenium 2 中使用 Chrome 驱动程序【英文标题】:Using Chrome Driver with Selenium 2 【发布时间】:2011-09-16 15:25:25 【问题描述】:我正在尝试使用 Chrome Drive 执行我的一些测试,这些测试与 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 在 org.openqa.selenium.chrome.ChromeBinary.getChromeBinaryLocation(ChromeBinary.java:220) 在 org.openqa.selenium.chrome.ChromeBinary.getCommandline(ChromeBinary.java:121) 在 org.openqa.selenium.chrome.ChromeBinary.prepareProcess(ChromeBinary.java:67) 在 org.openqa.selenium.chrome.ChromeBinary.start(ChromeBinary.java:109) 在 org.openqa.selenium.chrome.ChromeCommandExecutor.start(ChromeCommandExecutor.java:373) 在 org.openqa.selenium.chrome.ChromeDriver.startClient(ChromeDriver.java:65) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:85) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:25) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:43) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:53) 在 equifax.qa.test.NewTests.access.main(access.java:11)
如果有人可以帮助我,那就太好了。
【问题讨论】:
此堆栈跟踪来自旧版本的 Selenium,在 ChromeDriver 重写之前。显示的某些类不再存在。下面给出的建议假设您使用的是较新版本。 你知道如何从 Python 中做到这一点吗?当我使用 Firefox 时,我会执行以下操作:如果有用于 chrome 的 python 模块? from selenium import selenium import unittest, time, re class Untitled(unittest.TestCase): def setUp(self): self.verificationErrors = [] self.selenium = selenium("localhost", 4444, "*chrome", "@987654321 @) self.selenium.start() 解决了我上面的问题。我可以用 *firefox、*mock、*firefoxproxy、*pifirefox、*chrome、*iexploreproxy、*iexplore、*firefox3、*safariproxy、*googlechrome、*konqueror、*firefox2、*safari、*piiexplore 替换“*chrome” *firefoxchrome, *opera, *iehta, *custom 我正在使用 groovy?如何为 groovy 提供这个? 我也有同样的问题,实际上我在这里发布了我的问题***.com/questions/18436156/… 我很困惑...是 Selenium、chromedriver 的问题还是什么? 【参考方案1】:如果您使用的是 Maven 项目。请按照以下步骤操作
-
从此链接下载最新的 chromedriver.exe。
在测试中创建一个驱动程序文件夹。它应该看起来像这样
src/test/resources/drivers
将 chromedriver.exe 移至上述步骤 2 中的路径
在创建 chrome 驱动程序对象之前使用下面的代码
System.setProperty("webdriver.chrome.driver",
Thread.currentThread().getContextClassLoader().getResource("drivers/chromedriver.exe").getFile());
【讨论】:
【参考方案2】:在 Chrome 中使用它
Step-1 Download Chrome driver from location
第二步使用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);
【讨论】:
【参考方案3】:您可以将功能设置为指向要启动的浏览器的二进制文件。
DesiredCapabilities 能力 = DesiredCapabilities.chrome(); capabilities.setCapability("chrome.binary", "/usr/lib/chromium-browser/chromium-browser");
WebDriver driver = new ChromeDriver(capabilities);
例如:- Chromium 浏览器 (33.0.1729.0 ) 适用于 ChromeDriver 2.7 而不是旧版本。
您可以从以下链接中选择所有可用的 chromedriver 版本:- http://chromedriver.storage.googleapis.com/index.html
所以尽量使用chromedriver支持的浏览器版本。
【讨论】:
【参考方案4】:从http://code.google.com/p/selenium/downloads/list 下载 ChromeDriver.exe,然后像这样添加系统属性:
System.setProperty("webdriver.chrome.driver", "...\chromedriver.exe");
【讨论】:
您好,我很好奇这个驱动程序与 org.openqa.selenium.chrome.ChromeDriver 有何不同? ChromeDriver 使用 chromedriver.exe 与 Chrome 交互。 org.openqa.selenium.chrome.ChromeDriver 只是一种语言绑定,它允许您与 chromedriver.exe 交互,后者又与实际浏览器交互。 +1 如果是这样,那我们为什么要设置系统属性呢?我们没有为 FireFox 设置这个! 我不能 100% 确定这是否是原因,但 ChromeDriver.exe 是由 Google 开发人员而不是 WebDriver/Selenium 团队开发的,所以我猜我认为这是集成问题。可能更容易同时开发两个项目?只是猜测! 该属性应该是“webdriver.chrome.driver”(至少在 selenium 2.0rc3 中)【参考方案5】:只需从 [http://code.google.com/ 下载 chromedriver_win32_13.0.775.0.zip 和 selenium-server-standalone-2.0rc3.jar p/selenium/下载/列表][1]
将 chromedriver_win32_13.0.775.0.zip 解压缩到一个文件夹中,例如。 C:/drivers/chrome/,使chromedriver.exe位于C:/drivers/chrome/chromedriver.exe。
在端口 6668 上向集线器注册节点(例如)
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 驱动程序已注册。
【讨论】:
【参考方案6】:我能够通过像这样启动 selenium 服务器来使其工作:
java -jar selenium-server-standalone-2.0rc2.jar -Dwebdriver.chrome.driver=c:\path\to\chromedriver.exe
(运行 Windows 7 64bit、Chrome 12、selenium server rc2)
【讨论】:
+1 我尝试使用 HtmlUnit,它工作正常:***.com/questions/18436156/… 我认为问题出在 ChromeDriver【参考方案7】:您是否确定您已从http://code.google.com/p/selenium/downloads/list 下载了 Chrome 驱动程序并将其放在您的PATH
中?
查看http://code.google.com/p/selenium/wiki/ChromeDriver了解更多详情
【讨论】:
问题,为什么我们必须使用提示窗口来运行我们的测试,Selenium 2 还没有提供这个功能? 你不需要运行它。这只是连接到远程实例时有用的一种使用方式。在本地做,你也可以只设置系统属性,让 WebDriver 负责启动等。 您好,我很好奇这个驱动程序与 org.openqa.selenium.chrome.ChromeDriver 有何不同?以上是关于在 Selenium 2 中使用 Chrome 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
windows10下python中selenium的chrome驱动安装与使用
为啥selenium2library 的mouse over在chrome中一闪而过
如何使用 Java + ChromeDriver 在 AWS Lambda 中运行 Google Chrome 进行 Selenium 测试