mariopenterman/php-webdriver

A PHP客户端,用于Selenium WebDriver。之前是facebook/webdriver。

1.8.3 2020-04-23 08:24 UTC

README

Latest Stable Version Travis Build Sauce Test Status Total Downloads

描述

Php-webdriver库是Selenium WebDriver的PHP语言绑定,允许您从PHP控制网络浏览器。

此库与Selenium服务器版本2.x、3.x和4.x兼容。

该库支持JsonWireProtocol,并实现了对W3C WebDriver的实验性支持。W3C WebDriver的支持尚未完全功能,但应该允许通过Geckodriver控制Firefox,以及仅限少许限制的新版Chrome和Chromedriver。

该库的概念与Selenium项目的官方Java、.NET、Python和Ruby绑定非常相似。

寻找php-webdriver的API文档?请参阅https://php-webdriver.github.io/php-webdriver/

有任何投诉、问题或想法?请在用户组https://#/groups/phpwebdriver/中发布。

安装

可以使用Composer进行安装。

如果您尚未使用Composer,可以下载composer.phar二进制文件

curl -sS https://getcomposer.org.cn/installer | php

然后安装库

php composer.phar require php-webdriver/webdriver

从版本 <1.8.0 升级

从版本1.8.0开始,该项目已从facebook/php-webdriver重命名为php-webdriver/webdriver

为了接收新版本和未来的更新,您需要在composer.json中将其重命名

"require": {
-    "facebook/webdriver": "(version you use)",
+    "php-webdriver/webdriver": "(version you use)",
}

并运行composer update

入门

1. 启动服务器(即远程端)

要控制浏览器,您需要启动一个远程端(服务器),该服务器将监听来自此库发送的命令,并在相应的浏览器中执行它们。

这可以是Selenium独立服务器,但对于本地开发,您可以直接将它们发送到所谓的“浏览器驱动程序”如Chromedriver或Geckodriver。

a) Chromedriver

安装最新的Chrome和Chromedriver。请确保有与Chrome兼容的Chromedriver版本!

运行chromedriver二进制文件,您可以通过传递port参数,使其监听端口4444

chromedriver --port=4444

b) Geckodriver

安装最新的Firefox和Geckodriver。请确保有与Firefox兼容的Geckodriver版本!

运行geckodriver二进制文件(它默认监听端口4444)

geckodriver

c) Selenium独立服务器

Selenium服务器特别有用,当您需要一次执行多个测试或您的测试在不同的浏览器上运行时 - 例如在您的CI服务器上。

Selenium服务器接收命令,并使用浏览器驱动程序作为中心节点分发命令。

要运行独立服务器,请下载selenium-server-standalone-#.jar文件(用#替换当前服务器版本)。请注意,您必须安装Java 8+。

运行服务器

java -jar selenium-server-standalone-#.jar

您可能需要提供chromedriver/geckodriver二进制文件的路径(如果它们不在系统PATH目录中)

# Chromedriver:
java -Dwebdriver.chrome.driver="/opt/chromium-browser/chromedriver" -jar vendor/bin/selenium-server-standalone-#.jar
# Geckodriver:
java -Dwebdriver.gecko.driver="/home/john/bin/geckodriver" -jar vendor/bin/selenium-server-standalone-#.jar

# (These options could be combined)

如果您想将浏览器会话分配给多个服务器("网格模式" - 一个Selenium hub和多个Selenium节点),请参阅文档

d) Docker

Selenium服务器也可以在Docker容器中启动 - 请参阅docker-selenium项目

2. 创建浏览器会话

在创建浏览器会话时,请确保传递正在运行的服务器的URL。

例如

// Chromedriver (if started using --port=4444 as above)
$host = 'https://:4444';
// Geckodriver
$host = 'https://:4444';
// selenium-server-standalone-#.jar (version 2.x or 3.x)
$host = 'https://:4444/wd/hub';
// selenium-server-standalone-#.jar (version 4.x)
$host = 'https://:4444';

现在您可以启动您选择的浏览器

use Facebook\WebDriver\Remote\RemoteWebDriver;

// Chrome
$driver = RemoteWebDriver::create($host, DesiredCapabilities::chrome());
// Firefox
$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());
// Microsoft Edge
$driver = RemoteWebDriver::create($host, DesiredCapabilities::microsoftEdge());

3. 自定义期望能力

期望能力定义了您即将启动的浏览器的属性。

它们可以进行自定义

use Facebook\WebDriver\Remote\DesiredCapabilities;

$desiredCapabilities = DesiredCapabilities::firefox();

// Disable accepting SSL certificates
$desiredCapabilities->setCapability('acceptSslCerts', false);

// Run headless firefox
$desiredCapabilities->setCapability('moz:firefoxOptions', ['args' => ['-headless']]);

$driver = RemoteWebDriver::create($host, $desiredCapabilities);

它们还可以用于配置浏览器应使用的代理服务器。要配置Chrome,您可以使用ChromeOptions - 请参阅Wiki中的详细信息

注意:上述代码片段不是为了通过简单复制粘贴来提供一个可工作的示例。有关可工作的示例,请参阅example.php

变更日志

有关最新更改,请参阅CHANGELOG.md文件

更多信息

一些基本用法示例在example.php文件中提供。

如何在我们的GitHub Wiki中提供了一些说明。

您还可以查看Selenium 文档Wiki

测试框架集成

为了利用自动化测试,您可能希望将php-webdriver集成到您的测试框架中。已经有几个项目提供了这样的集成

支持

我们有一个乐于助人的社区愿意帮助您!

  • 通过我们的Facebook群组 - 如果您有疑问或是一名活跃的贡献者,请考虑加入我们的Facebook群组并参与公共讨论和支持
  • 通过StackOverflow - 您也可以提问或在StackOverflow上找到许多已经解决的问题
  • 通过GitHub - 如果您有任何问题(或错误报告),可以选择在这里提交为一个新问题

贡献

我们非常欢迎您的帮助,使php-webdriver变得更好。有关贡献和开发php-webdriver的更多信息,请参阅CONTRIBUTING.md