使用Facebook / webdriver进行页面对象扩展

时间:2018-02-28 20:34:10

标签: php selenium-webdriver behat pageobjects mink

我是Behat的新手,并使用php facebook / webriver扩展程序通过Selenium合并页面对象。我已经使用selenium webdriver使用Java / testNG使用页面对象模型来过去自动化Web应用程序,但是使用Behat和php设置我只是遇到了问题。

所以我想做的不是使用带有貂皮的selenium2driver,我想在我的项目中使用类似于这种格式的facebook / webdriver:

getMatchesPicksList(matches, getStringEnumValues(EndType));

我希望所有页面都有自己的类,并且能够从FeatureContext.php文件中调用每个页面;所以我可以保持它尽可能干净。

我的作曲家看起来像这样:

Project
|-bin(folder)
|-features(folder)
   --NewFeature.Feature
  |--bootstrap(folder)
    --FeatureContext.php
   |--Page(folder)
    ---HomePage.php
    ---RegistrationPage.php
|-vendor

和我的behat.yml类似于这个

"require": {
    "facebook/webdriver": "~1.0",
    "behat/behat": "3.4.2",
    "behat/mink-goutte-driver" : "*",
    "behat/mink-selenium2-driver": "1.3.1",
    "sensiolabs/behat-page-object-extension": "^2.0",
    "behat/mink": "1.7.1"
},
"config": {
    "bin-dir": "bin/"
}, 

我不确定是否可以使用页面对象扩展程序在页面内启动webdriver(或只是导航到页面),我可以让firefox启动通过selenium-server-standalone-3.8.1.jar,但我不确定如何正确实现页面文件,因此它会读取。

Featurecontext文件:

default:
 extensions:
    SensioLabs\Behat\PageObjectExtension: ~
    Behat\MinkExtension:
        base_url: https://myurl.com
        selenium2:
            wd_host: localhost:4444/wd/hub

HomePage文件设置:

use Behat\Behat\Context\Context;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;
use Page\Homepage;
/**
 * Defines application features from the specific context.
 */
class FeatureContext implements Context
{
private $homepage;
/**
 * Initializes context.
 *
 * Every scenario gets its own context instance.
 * You can also pass arbitrary arguments to the
 * context constructor through behat.yml.
 */
public function __construct(Homepage $homepage)
{
    $this->homepage = $homepage;
}

/**
 * @Given \/^(?:|I )visited homepage$\/
 */
public function iVisitedHomepage()
{
    $this->homepage->navigateToSite();
}

}

我不确定我是否在正确的轨道上,或者我是否应该创建一个单独设置驱动程序的新BasePage类?以及如何格式化behat.yml以便它能够正确查找文件?

1 个答案:

答案 0 :(得分:0)

据我所知,使用Mink扩展实际上是在使用PHP Facebook \ WebDriver的分支。

如果查看Vendor文件夹,应该会看到一个“ instalclick”文件夹,其中包含MinkExtension使用的“ WebDriver”。

当您在config.yaml中告诉behat使用“ Behat \ MinkExtension:”时,将在behat上下文基础“ instalclick”而非实际“ Facebook \ WebDriver \”的基础中创建驱动程序并可用。

我从未使用过'SensioLabs \ Behat \ PageObjectExtension',但是我的假设是水貂会话的一个实例,驱动程序自动可用(它们在基类中初始化)。因此,您只需启动并编写类实现的代码。