通过WebDriver驱动,Selenium支持市场上的所有主流浏览器,如Chrom(ium),Firefox,Internet Explorer,Opera和Safari。
尽管并非所有浏览器都支持远程控制,但WebDriver尽可能使用浏览器内置的自动化支持来驱动浏览器。
WebDriver的目标是尽可能地模拟真实用户与浏览器的交互。这可以在不同浏览器中
以不同标准进行。有关不同驱动程序特性的更多详细信息,请参阅驱动程序特性。
尽管所有驱动程序共享一个面向用户的界面来控制浏览器,但它们设置浏览器会话的方式略有不同。由于许多驱动程序实现由第三方提供,因此它们不包含在标准Selenium模块中。
驱动程序实例化,配置文件管理和各种浏览器特定设置是具有不同要求的参数的示例,具体取决于浏览器。
添加可执行文件(驱动)到PATH
大多数driver需要Selenium的额外可执行文件才能与浏览器通信。可以在启动WebDriver之前手动指定可执行文件的位置,但这样测试的可移植性会很差,因为可执行文件需要位于每台计算机上的相同位置,或者包含在测试代码存储库中。
通过将包含WebDriver二进制文件的文件夹添加到系统的路径中,Selenium将能够找到其他二进制文件,而无需测试代码来定位驱动程序的确切位置。
- 创建一个目录以放置可执行文件,例如 C:\ WebDriver \ bin或/ opt / WebDriver / bin
- 将目录添加到PATH:
- 在Windows上 - 以管理员身份打开命令提示符,并运行以下命令将目录永久添加到计算机上所有用户的环境变量(path)中:
setx /m path "%path%;C:\WebDriver\bin\"
- 在macOS和Linux上使用Bash用户 - 在终端中:
export PATH=$PATH:/opt/WebDriver/bin >> ~/.profile
- 您现在可以测试更改了。关闭所有打开的命令提示并打开一个新提示。在上一步中创建的文件夹中键入其中一个二进制文件的名称,例如:
chromedriver
如果您的PATH配置正确,您将看到一些与驱动程序启动相关的输出:
在端口9515上启动ChromeDriver 2.25.426935(820a95b0b81d33e42712f9198c215f703412e1a1)
仅允许本地连接。
驱动详细参考
Browser | Supported OS | Maintained by | Download | Issue Tracker |
Chromium/Chrome | Windows | | ||
Firefox | Windows | Mozilla | ||
Edge | Windows 10 | Microsoft | ||
Internet Explorer | Windows | Selenium Project | ||
Safari | macOS El Capitan and newer | Apple | Built in | |
Opera | Windows | Opera |
Chromium/Chrome
要驱动Chrome或Chromium,您必须下载 chromedriver 并将其放在系统路径上的文件夹中
当chromedriver配了环境变量时,应该能够从任何目录执行_chromedriver_可执行文件。
执行以下操作实例化Chrome / Chromium会话:
WebDriver driver = new ChromeDriver();
如果未配置环境变量,必须设置chromedriver可执行路径,使用以下语句
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
Firefox
从Selenium 3开始,Mozilla已经接管了带有geckodriver的Firefox驱动程序。Firefox的新驱动程序称为geckodriver,适用于Firefox 48及更高版本。由于Firefox WebDriver正在开发中,越新的Firefox版本支持越好。
由于geckodriver是启动Firefox的新默认方式,因此可以像Selenium 2一样实例化Firefox:
WebDriver driver = new FirefoxDriver();
如谷歌浏览器驱动一样如果不想在环境变量(path)中设置geckodriver位置,可以使用下面代码设置geckodriver可执行路径
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
目前可以通过安装Firefox 47.0.1 或45 ESR 并将所需的marionette功能指定为 false来恢复到较旧的功能更齐全的Firefox驱动程序 。Firefox的后续版本不再兼容。
Edge
Edge是Microsoft最新的浏览器,包含在Windows 10和Server 2016中.Edge的更新与主要Windows更新捆绑在一起,因此需要下载与当前安装的Windows版本号相匹配的二进制文件。该Edge Developer site 包含指向所有可用的二进制文件。可以通过Microsoft引发针对EdgeDriver实现的错误 。如果您希望针对Edge运行测试,但未运行Windows 10,则Microsoft会在Edge Developer站点上为测试人员提供免费的VM 。
WebDriver driver = new EdgeDriver();
如果环境变量(path)中不存在Edge驱动程序,则可以使用以下行设置路径:
System.setProperty("webdriver.edge.driver", "C:\path\to\MicrosoftWebDriver.exe");
IE浏览器
Internet Explorer是Microsoft的默认浏览器,直到Windows 10,尽管它仍然包含在Windows 10中.Internet Explorer驱动程序是唯一的驱动程序Selenium项目旨在支持 Microsoft认为当前的相同版本 。较旧的版本可能有效,但不受支持。
虽然Selenium项目为32位和64位版本的Internet Explorer提供了二进制文件,但Internet Explorer 10和11与64位驱动程序存在一些限制,但使用32位驱动程序仍然可以正常工作。应该注意的是,由于Internet Explorer首选项是根据登录用户的帐户保存的,因此需要进行一些额外的设置。
WebDriver driver = new InternetExplorerDriver();
如果路径中不存在Internet Explorer驱动程序,则可以使用以下行设置路径:
System.setProperty("webdriver.ie.driver", "C:\path\to\IEDriver.exe");
Microsoft还为Windows 7和8.1上运行的Internet Explorer 11为提供WebDriver二进制文件。它自2014年以来未基于W3规范的草案版本更新。
Opera
当前版本的Opera基于Chromium引擎构建,现在通过闭源Opera Chromium驱动程序支持WebDriver ,可以将其添加到PATH 或作为系统属性。
实例化驱动程序会话与Firefox和Chromium类似:
WebDriver driver = new OperaDriver();
Safari
从macOS El Capitan和Sierra上的Safari 10开始,每个版本的浏览器都包含WebDriver支持。要启用支持:
- Enable the Developer menu from Safari preferences
- Check the Allow Remote Automation option from with the Develop menu
- Run
/usr/bin/safaridriver -p 1337
首次从终端输入密码并在提示符下输入密码以授权WebDriver
然后,您可以使用以下命令启动驱动程序
WebDriver driver = new SafariDriver();
模拟浏览器
HtmlUnit
HtmlUnit是一个“用于Java程序的GUI-Less浏览器”。它为HTML文档建模并提供一个API,允许您调用页面,填写表单,点击链接等。它支持JavaScript,能够使用AJAX库,根据所使用的配置模拟Chrome,Firefox或Internet Explorer。它已被移动到一个 新的位置。
PhantomJS
PhantomJS是一款基于Webkit的无头浏览器,虽然版本比Google Chrome或Safari使用的版本要早得多。。虽然历史上一个受欢迎的选择,现在避免使用PhantomJS是明智的。自8月5日以来,该项目一直没有维护 ,因此在网络将继续变化的同时,PhantomJS将不会更新。这是在谷歌宣布能够无头地运行Chrome之后,现在Mozilla的Firefox也提供了这种功能。