使用Facebook/WebDriver使用页面对象扩展



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

所以我想做的是与Mink一起使用Selenium2Driver,而是想将Facebook/WebDriver与我的项目类似的格式合并:

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

我希望所有页面都有自己的类,并能够从farmaturecontext.php文件中调用每个页面;这样我就可以保持尽可能清洁。

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

"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/"
}, 

和我的behat.yml类似于此

default:
 extensions:
    SensioLabsBehatPageObjectExtension: ~
    BehatMinkExtension:
        base_url: https://myurl.com
        selenium2:
            wd_host: localhost:4444/wd/hub

我不确定是否可以使用页面对象扩展程序在页面中启动WebDriver(或仅导航到页面(,我可以让Firefox通过Selenium-Server-SandalOne-3.8.1启动。。

featurecontext文件:

use BehatBehatContextContext;
use BehatGherkinNodePyStringNode;
use BehatGherkinNodeTableNode;
use PageHomepage;
/**
 * 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();
}
}

主页文件设置:

use SensioLabsBehatPageObjectExtensionPageObjectPage;
use FacebookWebDriverRemoteDesiredCapabilities,
    FacebookWebDriverRemoteRemoteWebDriver;
use BehatMinkMink,
    BehatMinkSession,
    BehatMinkDriverSelenium2Driver;
class Homepage extends Page{
protected $path = '/';

//setup facebookwebdriver
public function navigateToSite(){
      //facebook webdriver code
}
}

只是不确定我是否什至在正确的轨道上,或者我是否应该创建一个新的基本媒体类,以分别设置驱动程序?我将如何格式化behat.yml,以便知道正确查找文件?

我通过使用mink扩展名所知道的,实际上您正在使用php facebook web driver的叉子。

如果您查看供应商文件夹,则应该看到一个" istalclick"文件夹,其中包含MinKextension使用的" WebDriver"。

当您在config.yaml中告诉behat使用" behat minkextension:"驱动程序是在" InstalClick"的Behat上下文基础上使用的,而不是实际" Facebook WebDriver "的基础。

我从未使用过'sensiolabs behat pageObjectExtension',但我的假设是mink会话的一个实例,并且驱动程序可以自动使用(它们以基类初始化(。因此,您只需启动并编码类实现。

最新更新