>测试是一个非常广泛的主题,无论是单位测试,功能测试,接受测试等。在本文中,我们将了解如何使用硒进行接受测试。我将使用一个实用的示例来说明真实用例。我将假设您已经知道如何使用Phpunit进行单元测试,或者至少可以掌握一切。让我们开始。
进行正式测试,以确定系统是否满足其接受标准,并使客户能够确定是否接受该系统。
硒是自动化用户界面测试的工具。它有助于对浏览器测试应用程序。该过程可以像这样描述:什么是硒?
访问页面http://myapp.dev/videos。
断言该页面包含20个视频的列表。使用Selenium Webdriver(Selenium 2)时,测试将转换为命令并传递到Selenium Server(详细介绍此信息),然后使用Web浏览器本机API传递到浏览器。
>应用程序设置>
>
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
> phpunit和硒
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
完成测试时调用拆卸方法,用于清除阶段。我们使用它来关闭浏览器并终止当前会话。
><span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
数据提供商
Phpunit数据提供商> PHPUNIT数据提供商允许我们使用特定数据提供测试,而无需迭代其测试。您可以在文档中阅读更多内容。
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
>使用网页时的一个常见任务是元素选择。 Phpunit的硒扩展为此提供了非常不错的API。您可以按类名称,标签,名称,ID,CSS选择器,XPath等选择元素。该方法将返回phpunit_extensions_selenium2testcase_element实例,您可以使用该实例来选择其他子元素,属性等。您还可以设置或获得元素值,更新元素CSS和许多其他常见任务。对于我们的页面,我们可能会执行以下操作。
><span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
>此测试将选择用户名输入并设置一个值,然后提交订阅表格。在此之后,我们可以添加一个断言,以查看响应是否如预期。页面将包含一切都很好!如果通过了验证。
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
我们的数据提供商包含输入名称和相应的值。我们将创建一个单独的方法来处理填充表单输入并提交。
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
>
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function validInputsProvider() </span> <span>{ </span> <span>$inputs[] = [ </span> <span>[ </span> <span>'username' => 'younesrafie', </span> <span>'password' => 'mypassword', </span> <span>'password_confirmation' => 'mypassword', </span> <span>'email' => 'mymail@gmail.com', </span> <span>'cardHolderName' => 'RAFIE Younes', </span> <span>'cardNumber' => '378282246310005', </span> <span>'billingAddress' => 'Narjiss B Fez Morocco', </span> <span>'cvc' => '850', </span> <span>'expirationMonth' => '01', </span> <span>'expirationYear' => '2016', </span> <span>] </span> <span>]; </span> <span>return $inputs; </span> <span>} </span> <span>public static function invalidInputsProvider() </span> <span>{ </span> <span>$inputs[] = [ </span> <span>[ </span> <span>'username' => '@younesrafie', </span> <span>'password' => 'mypassword', </span> <span>'password_confirmation' => 'mypassword', </span> <span>'email' => 'mymail@gmail.com', </span> <span>'cardHolderName' => 'RAFIE Younes', </span> <span>'cardNumber' => '378282246310005', </span> <span>'billingAddress' => 'Narjiss B Fez Morocco', </span> <span>'cvc' => '850', </span> <span>'expirationMonth' => '01', </span> <span>'expirationYear' => '2016', </span> <span>], </span> <span>"Username must only contain alpha numeric characters and dashes." </span> <span>]; </span> <span>// ... </span> <span>return $inputs; </span> <span>} </span><span>}</span>
>
<span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function testFormSubmissionWithUsername() </span> <span>{ </span> <span>$this->byName('username')->value('younesrafie'); </span> <span>$this->byId('subscriptionForm')->submit(); </span> <span>} </span><span>}</span>
我们的表单仅包含基本交互,例如选择元素,设置值,提交表单等。但是,我们还可以在按钮或链接元素上使用单击方法来验证目标页面是否按预期工作。 >
>我们使用Firefox浏览器进行测试。但是,我们也可以使用任何其他浏览器。硒使用驱动程序方法,每个浏览器供应商都在提供自己的驱动程序。您可以检查文档中受支持的驱动程序的列表。
>>要启用Chrome浏览器,您需要下载Chromedriver并在启动Selenium Server时将路径指定为选项。
<span>composer require --dev phpunit/phpunit </span><span>composer require --dev phpunit/phpunit-selenium</span>
<span>alias sserve="java -jar /usr/local/bin/selenium-server-standalone-<version>.jar"</span>
>如果您的页面内容是通过AJAX加载的,并且您不想直接触发页面加载的测试,则需要等到页面加载并存在元素。
<span>// tests/acceptance/UserSubscriptionTest.php </span> <span>class UserSubscriptionTest extends PHPUnit_Extensions_Selenium2TestCase </span><span>{ </span> <span>public function setUp() </span> <span>{ </span> <span>$this->setHost('localhost'); </span> <span>$this->setPort(4444); </span> <span>$this->setBrowserUrl('http://vaprobash.dev'); </span> <span>$this->setBrowser('firefox'); </span> <span>} </span><span>}</span>
结论
<span>public function tearDown() </span><span>{ </span> <span>$this->stop(); </span><span>}</span>
>如何在php?
>我如何使用selenium phpunit中的浏览器会话?使用WebDriver的会话方法完成了使用Selenium的Phpunit。当您创建WebDriver的新实例时,将启动一个新的浏览器会话。您可以使用各种方法(例如navigate(),refresh()或close()与此会话进行交互。要结束会话,您可以使用Quit()方法,该方法将关闭所有窗口并结束会话。
>如何在不同浏览器上使用Selenium运行phpunit测试?
selenium web Driver支持多个浏览器,包括Chrome,Firefox,Firefox,Firefox,Firefox,Firefox, Safari和Internet Explorer。要在其他浏览器上运行Phpunit测试,您需要为该浏览器创建一个新的WebDriver实例。例如,要使用Firefox,您将创建一个新的FirefoxDriver实例。然后,您可以使用此驱动程序来运行测试。
以上是将硒与phpunit一起使用的详细内容。更多信息请关注PHP中文网其他相关文章!