ravage84/phpunit-selenium2-pageobjects

此包已被废弃且不再维护。未建议替代包。

PHPUnit Selenium2 PageObjects

dev-master 2014-11-25 17:36 UTC

This package is auto-updated.

Last update: 2022-02-01 12:36:26 UTC


README

Build Status @ Travis CI

PageObjects是通过对象表示网页服务,从而抽象出Selenium的内部结构和页面结构的一种想法。

您可以在以下链接中阅读有关PageObjects的所有信息:http://code.google.com/p/selenium/wiki/PageObjects

此外,此仓库还包含一个示例应用程序和功能测试:https://github.com/nationalfield/phpunit-selenium-pageobjects/tree/master/Example

原因

您应该将良好的编程实践应用于测试。测试是代码。糟糕的代码可能会显著增加您的技术债务。测试应该是DRY(不要重复自己)。

安装

如果您使用Composer,只需将ravage84/phpunit-selenium2-pageobjects添加到项目中的composer.json文件中作为依赖项。

{
    "require-dev": {
        "phpunit/phpunit": "3.7.*"
    }
}

要求

  • Composer
  • PHP 5.3
  • PHPUnit Selenium 1.3.x

行为

获取器和设置器

您应该为每个字段定义一个获取器和设置器,以供功能测试之外使用。永远不要在PageObject之外手动访问映射、定位器或映射键。

映射

映射使用CSS选择器定义。

<?php
protected $map = array(
    'first_name' = '#account_fname',
    'last_name' = '#account_lname',
);

当你实例化一个PageObject时,它会调用assertMapConditions,该函数会自动遍历所有$map元素并断言它们的存在。

注意:还有一个方法叫做assertPreConditions,它在assertMapConditions之前执行。实现此方法允许你执行像waitForElementPresent这样的方法。

使用映射

要使用映射元素,只需将ByMap附加到您要利用的方法名称的末尾即可。例如

<?php
$this->typeByMap('first_name', 'Graham');
$this->typeByMap('last_name', 'Christensen');