我是新来的,可以使用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会话的一个实例,并且驱动程序可以自动使用(它们以基类初始化(。因此,您只需启动并编码类实现。