pstephan1187/laravel-jtest

允许通过Selenium测试启用JavaScript的页面。

0.3.4 2016-12-21 17:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:36:50 UTC


README

Laravel JTest是一个用于运行自动化浏览器测试的包,针对基于Laravel的应用程序。它专门设计为能够测试启用JavaScript的代码。

安装

composer require pstephan1187/laravel-jtest

然后在您的PHPUnit测试中,扩展JTest\JTestCase类,并将baseUrl属性设置为您的应用程序URL

<?php

use JTest\JTestCase;

class MyTestClass extends JTestCase
{
	protected $baseUrl = 'http://localhost:8888';

	//...
}

您还可以设置要测试的浏览器(默认为Chrome)

protected $browser = 'firefox';

您还需要确保已安装并运行Selenium Stand-Alone Server。您可以从此处下载Selenium。您可以通过在包含selenium服务器二进制文件的目录中执行此命令来运行selenium

java -jar selenium-server-standalone-x.x.x.jar

请确保使用您下载的实际版本号。

使用方法

JTest使用链式方法结构。这允许您按顺序连续运行每个方法。以下是一个如何使用JTest的基本示例

public function testUserCanLogin()
{
	$this->visit('/')
	     ->click('Login')
	     ->seePageIs('/auth/login')
	     ->type('user.email@example.com', '#email')
	     ->type('user_p@ssw0rd', '#password')
	     ->press('form#login input[type=submit]')
	     ->seePageIs('/dashboard');
}

方法

setWindowSize($width, $height)

这允许您强制浏览器窗口大小为特定维度。宽度和高度都是必需的,且必须是像素值。浏览器将在打开下一个窗口时调整大小。建议在运行visit命令之前运行此命令,以便窗口立即调整为所需大小。

visit($uri)

将浏览器导航到指定的路径。baseUrl将附加到$uri上。如果您将baseUrl设置为'http://localhost:8000',然后运行$this->visit('/my-page'),则浏览器将导航到'http://localhost:8000/my-page'。

seePageIs($url)

这将断言当前URL是baseUrl加上给定的URL。考虑到当前URL为'http://localhost:8000/my-page',而baseUrl为'http://localhost:8000',则seePageIs('/my-page')将通过。

type($text, $selector)

这将把给定的文本输入到第一个匹配给定CSS选择器的元素中。

press($selector)

这将执行第一个匹配给定CSS选择器的元素上的点击事件。

click($text)

这将执行第一个匹配文本的链接("a"标签)上的点击事件。

select($values, $selector)

这将选择任何文本或值与给定值匹配的选项,这些选项位于第一个匹配给定CSS选择器的元素中。$values可以是数组或单个项。

file($file_path, $selector)

这将选择位于$file_path的第一个匹配给定CSS选择器的文件输入中的文件。

submit($selector)

这将提交第一个匹配给定CSS选择器的表单。

see($text)

这将断言给定的文本在页面上可见。

notSee($text)

这将断言给定的文本在页面上不可见。

seeOneOf($text_options)

这将断言给定的文本选项之一在页面上可见。

seeNumberOfElements($number, $selector)

这将断言给定的CSS选择器返回指定的元素数量

seeValueOfInput($value, $selector)

这将断言找到的第一个匹配给定CSS选择器的输入元素具有与其值匹配的值属性。

seeOptionsAreSelected($options, $selector)

这将断言在第一个匹配给定CSS选择器的元素中,给定的每个选项都被选中。 $options 将基于选项元素的文本或其值进行匹配。 $options 可以接受一个项目数组或单个项目。

seeOptionIsSelected($option, $selector)

这是 seeOptionsAreSelected 的别名

seeInElement($text, $selector)

这将断言找到的第一个匹配给定CSS选择器的元素包含给定的文本。如果 $text 是一个数组,这将断言所有给定项目都位于匹配元素中。

getCurrentUrl()

这将返回浏览器当前所在的URL。此方法不允许进一步链式调用。

dump($var)

这将把给定的变量输出到控制台。

wait($seconds)

这将暂停测试执行指定的秒数。

waitUntilElementExists($selector, $timeout = 5, $interval = 200)

这将暂停测试执行,直到存在一个匹配给定选择器的元素。元素将在每个 $interval 毫秒内检查,直到 $timeout 秒过去。

waitUntilElementVisible($selector, $timeout = 5, $interval = 200)

这将暂停测试执行,直到匹配给定选择器的元素可见。元素将在每个 $interval 毫秒内检查,直到 $timeout 秒过去。

waitUntilText($text, $timeout = 5, $interval = 200)

这将暂停测试执行,直到页面上存在给定的文本。文本将在每个 $interval 毫秒内检查,直到 $timeout 秒过去。

element($selector, $callback)

这将找到第一个匹配给定CSS选择器的元素,将其传递给回调,执行回调,然后继续测试。以下示例找到第一个 h1 标签,然后在其上搜索按钮,然后点击按钮。

$this->element('h1', function($element){
	$element->findElement('button')->click()
});

传递给回调的 $element 是类型 Facebook\WebDriver\WebDriverElement更多信息

elements($selector, $callback)

element 的行为相同,但将所有匹配的元素传递给回调,而不是只传递第一个。