How to run Selenium WebDriver test cases in Chrome?
我试过这个
1 | WebDriver driver = new ChromeDriver(); |
但我得到的错误是
Failed tests: setUp(com.TEST): The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see code here . The latest version can be downloaded from Link
如何让Chrome测试Selenium-WebDriver测试用例?
您需要从以下位置下载可执行驱动程序:
ChromeDriver下载
然后,您需要做的就是在创建驱动程序对象之前使用以下内容(已按正确的顺序显示):
1 2 | System.setProperty("webdriver.chrome.driver","/path/to/chromedriver"); WebDriver driver = new ChromeDriver(); |
这是从ChromeDriver文档中最有用的指南中提取的。
从Chrome驱动程序下载Chrome驱动程序的更新版本
请阅读发行说明以及此处
如果Chrome浏览器已更新,那么您需要从上面的链接下载新的chormedriver,因为它可以使用新的浏览器版本进行压缩。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class chrome { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver","/path/to/chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("http://www.google.com"); } } |
您应该在文件夹中下载chromeDriver,并在PATH变量中添加此文件夹。
您必须重新启动控制台才能使其正常工作。
如果您在MacOS上使用自制程序,则可以使用以下命令:
(编辑):
没有其他配置之后它应该可以正常工作。
您可以使用以下代码使用Selenium网络驱动程序在Chrome中运行测试用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.io.IOException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ChromeTest { /** * @param args * @throws InterruptedException * @throws IOException */ public static void main(String[] args) throws InterruptedException, IOException { // Telling the system where to find the Chrome driver System.setProperty( "webdriver.chrome.driver", "E:/chromedriver_win32/chromedriver.exe"); WebDriver webDriver = new ChromeDriver(); // Open google.com webDriver.navigate().to("http://www.google.com"); String html = webDriver.getPageSource(); // Printing result here. System.out.println(html); webDriver.close(); webDriver.quit(); } } |
在这里找到最新版本的
下载后,将其解压缩到python安装的根目录,例如
您甚至不需要在任何地方指定路径和/或将
我只是在一个干净的Python安装上做到了这一点。
您需要安装chrome驱动程序。您可以使用nugget安装此包,如下所示
下载最新版本的chrome驱动程序并使用此代码:
1 2 3 4 5 | System.setProperty("webdriver.chrome.driver"," path of chromedriver.exe"); WebDriver driver= new ChromeDriver(); driver.manage().window().maximize(); Thread.sleep(10000); driver.get("http://stackoverflow.com"); |
在Ubuntu上,您只需安装
1 | apt install chromium-chromedriver |
请注意,这也会安装过时的selenium版本。要安装最新的selenium:
1 | pip install selenium |
以上所有答案都是正确的,以下是对问题和解决方案的深入探讨。
例如,selenium中的驱动程序构造函数
1 | WebDriver driver = new ChromeDriver(); |
搜索驱动程序可执行文件,在这种情况下,chrome驱动程序搜索chrome驱动程序可执行文件,以防服务无法找到可执行文件时抛出异常
这是异常的来源(注意检查状态方法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /** * * @param exeName Name of the executable file to look for in PATH * @param exeProperty Name of a system property that specifies the path to the executable file * @param exeDocs The link to the driver documentation page * @param exeDownload The link to the driver download page * * @return The driver executable as a {@link File} object * @throws IllegalStateException If the executable not found or cannot be executed */ protected static File findExecutable( String exeName, String exeProperty, String exeDocs, String exeDownload) { String defaultPath = new ExecutableFinder().find(exeName); String exePath = System.getProperty(exeProperty, defaultPath); checkState(exePath != null, "The path to the driver executable must be set by the %s system property;" +" for more information, see %s." +"The latest version can be downloaded from %s", exeProperty, exeDocs, exeDownload); File exe = new File(exePath); checkExecutable(exe); return exe; } |
以下是检查状态方法,它抛出异常
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /** * Ensures the truth of an expression involving the state of the calling instance, but not * involving any parameters to the calling method. * * <p> See {@link #checkState(boolean, String, Object...)} for details. */ public static void checkState( boolean b, @Nullable String errorMessageTemplate, @Nullable Object p1, @Nullable Object p2, @Nullable Object p3) { if (!b) { throw new IllegalStateException(format(errorMessageTemplate, p1, p2, p3)); } } |
SOLUTION:在创建驱动程序对象之前设置系统属性,如下所示
1 2 | System.setProperty("webdriver.gecko.driver","path/to/chromedriver.exe"); WebDriver driver = new ChromeDriver(); |
以下是驱动程序服务搜索驱动程序可执行文件的代码段(对于chrome和firefox):
铬:
1 2 3 4 5 6 | @Override protected File findDefaultExecutable() { return findExecutable("chromedriver", CHROME_DRIVER_EXE_PROPERTY, "https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver", "http://chromedriver.storage.googleapis.com/index.html"); } |
火狐:
1 2 3 4 5 6 7 | @Override protected File findDefaultExecutable() { return findExecutable( "geckodriver", GECKO_DRIVER_EXE_PROPERTY, "https://github.com/mozilla/geckodriver", "https://github.com/mozilla/geckodriver/releases"); } |
其中CHROME_DRIVER_EXE_PROPERTY ="webdriver.chrome.driver"
和GECKO_DRIVER_EXE_PROPERTY ="webdriver.gecko.driver"
类似于其他浏览器的情况,以下是可用浏览器实现列表的快照
下载chromedriver的exe并将其提取到当前项目位置。
在这里链接,我们可以在这里下载最新版本的chromedriver。
https://sites.google.com/a/chromium.org/chromedriver/
这里是启动浏览器的简单代码并导航到url。
1 2 3 4 5 | System.setProperty("webdriver.chrome.driver","path of chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://any_url.com"); |