- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想知道是否有可能解析动态值的方法,特别是 name
通过使用 *.feature
Behat/Mink 在使用 Selenium2 功能运行到 Yml 配置文件时进行测试
behat.yml
文件使用 Behat/Mink/Extension
文件中包含 Selenium 2 Capabilities 参数的扩展文件。
default:
context:
class: 'FeatureContext'
extensions:
Behat\MinkExtension\Extension:
base_url:
javascript_session: 'selenium2'
goutte:
selenium2:
browser: firefox
wd_host: <sauce username>:<accesscode>@ondemand.saucelabs.com/wd/hub
capabilities: { "platform": "Windows 7" , "version": "21" , "name":"Test" }
在Extension.php file
内: https://github.com/Behat/MinkExtension/blob/2.0/src/Behat/MinkExtension/Extension.php
arrayNode('selenium2')->
children()->
scalarNode('browser')->
defaultValue(isset($config['selenium2']['browser']) ? $config['selenium2']['browser'] : '%behat.mink.browser_name%')->
end()->
arrayNode('capabilities')->
normalizeKeys(false)->
children()->
scalarNode('browserName')->
defaultValue(isset($config['selenium2']['capabilities']['browserName']) ? $config['selenium2']['capabilities']['browserName'] : 'firefox')->
end()->
scalarNode('version')->
defaultValue(isset($config['selenium2']['capabilities']['version']) ? $config['selenium2']['capabilities']['version'] : "9")->
end()->
scalarNode('platform')->
defaultValue(isset($config['selenium2']['capabilities']['platform']) ? $config['selenium2']['capabilities']['platform'] : 'ANY')->
end()->
scalarNode('browserVersion')->
defaultValue(isset($config['selenium2']['capabilities']['browserVersion']) ? $config['selenium2']['capabilities']['browserVersion'] : "9")->
end()->
scalarNode('browser')->
defaultValue(isset($config['selenium2']['capabilities']['browser']) ? $config['selenium2']['capabilities']['browser'] : 'firefox')->
end()->
scalarNode('ignoreZoomSetting')->
defaultValue(isset($config['selenium2']['capabilities']['ignoreZoomSetting']) ? $config['selenium2']['capabilities']['ignoreZoomSetting'] : 'false')->
end()->
scalarNode('name')->
defaultValue(isset($config['selenium2']['capabilities']['name']) ? $config['selenium2']['capabilities']['name'] : 'Behat Test')->
end()->
scalarNode('deviceOrientation')->
defaultValue(isset($config['selenium2']['capabilities']['deviceOrientation']) ? $config['selenium2']['capabilities']['deviceOrientation'] : 'portrait')->
end()->
scalarNode('deviceType')->
defaultValue(isset($config['selenium2']['capabilities']['deviceType']) ? $config['selenium2']['capabilities']['deviceType'] : 'tablet')->
end()->
scalarNode('selenium-version')->
defaultValue(isset($config['selenium2']['capabilities']['selenium-version']) ? $config['selenium2']['capabilities']['selenium-version'] : '2.31.0')->
end()->
scalarNode('max-duration')->
defaultValue(isset($config['selenium2']['capabilities']['max-duration']) ? $config['selenium2']['capabilities']['max-duration'] : '300')->
end()->
booleanNode('javascriptEnabled')->end()->
booleanNode('databaseEnabled')->end()->
booleanNode('locationContextEnabled')->end()->
booleanNode('applicationCacheEnabled')->end()->
booleanNode('browserConnectionEnabled')->end()->
booleanNode('webStorageEnabled')->end()->
booleanNode('rotatable')->end()->
booleanNode('acceptSslCerts')->end()->
booleanNode('nativeEvents')->end()->
booleanNode('passed')->end()->
booleanNode('record-video')->end()->
booleanNode('record-screenshots')->end()->
booleanNode('capture-html')->end()->
booleanNode('disable-popup-handler')->end()->
arrayNode('proxy')->
children()->
scalarNode('proxyType')->end()->
scalarNode('proxyAuthconfigUrl')->end()->
scalarNode('ftpProxy')->end()->
scalarNode('httpProxy')->end()->
scalarNode('sslProxy')->end()->
end()->
validate()->
ifTrue(function ($v) {
return empty($v);
})->
thenUnset()->
end()->
end()->
arrayNode('firefox')->
children()->
scalarNode('profile')->
validate()->
ifTrue(function ($v) {
return !file_exists($v);
})->
thenInvalid('Cannot find profile zip file %s')->
end()->
end()->
scalarNode('binary')->end()->
end()->
end()->
arrayNode('chrome')->
children()->
arrayNode('switches')->
prototype('scalar')->end()->
end()->
scalarNode('binary')->end()->
arrayNode('extensions')->
prototype('scalar')->end()->
end()->
end()->
end()->
end()->
end()->
scalarNode('wd_host')->
defaultValue(isset($config['selenium2']['wd_host']) ? $config['selenium2']['wd_host'] : 'http://localhost:4444/wd/hub')->
end()->
end()->
end()->
arrayNode('saucelabs')->
children()->
scalarNode('username')->
defaultValue(getenv('SAUCE_USERNAME'))->
end()->
scalarNode('access_key')->
defaultValue(getenv('SAUCE_ACCESS_KEY'))->
end()->
booleanNode('connect')->
defaultValue(isset($config['saucelabs']['connect']) ? 'true' === $config['saucelabs']['connect'] : false)->
end()->
scalarNode('browser')->
defaultValue(isset($config['saucelabs']['browser']) ? $config['saucelabs']['browser'] : 'firefox')->
end()->
arrayNode('capabilities')->
children()->
scalarNode('name')->
defaultValue(isset($config['saucelabs']['name']) ? $config['saucelabs']['name'] : 'Behat feature suite')->
end()->
scalarNode('platform')->
defaultValue(isset($config['saucelabs']['platform']) ? $config['saucelabs']['platform'] : 'Linux')->
end()->
scalarNode('version')->
defaultValue(isset($config['saucelabs']['version']) ? $config['saucelabs']['version'] : '21')->
end()->
scalarNode('deviceType')->
defaultValue(isset($config['saucelabs']['deviceType']) ? $config['saucelabs']['deviceType'] : null)->
end()->
scalarNode('deviceOrientation')->
defaultValue(isset($config['saucelabs']['deviceOrientation']) ? $config['saucelabs']['deviceOrientation'] : null)->
下Extension.php
在 MinkExtension 目录中,它加载了 selenium2.xml
包含一组数组的文件,以将该文件中的信息解析到 behat.yml
.
我注意到如果 yml 文件中没有指定 Selenium2 功能的任何参数,Extension.php
将根据数组名称分配一个默认值:
scalarNode('name')->
defaultValue(isset($config['selenium2']['capabilities']['name']) ? $config['selenium2']['capabilities']['name'] : 'Behat Test')->
话虽如此,我想知道是否有任何可能的方法来使用 Behat/Mink 功能测试的名称 <test>.feature
在我的本地目录中解析 name
中的标题在测试运行时。
最佳答案
迟到的答案,但总比没有好...
如何在您的 .feature 测试中使用标签?您可以建议 behat 只执行那些带有给定标签的测试:
如果你想动态地执行你的测试,你可以解析你的标签,例如通过一个 ant 文件:
<target name="test-behat">
<exec dir="${basedir}" executable="bin/behat" failonerror="false">
<arg line="--config ${basedir}/behat.yml --tags '${env.SELENIUM_TAG}'"/>
</exec>
</target>
这意味着在 behat-cli 中:
bin/behat --tags '@your_tag'
手动启动你的 ant 脚本:
ant -file <path to your ant-script> -D'SELENIUM_TAG'='@whatever_you_want'
对于完全自动化,您可以启动您的 ant 脚本(和您的 behat 测试),例如通过 jenkins(或任何其他可以处理 apache ant 的 CI)。您还可以传递 behat.yml、composer.json(如果您使用 composer)等所需的任何参数。
如果您真的只想执行一个 .feature,您可以采用相同的方式。
<target name="test-behat">
<exec dir="${basedir}" executable="bin/behat" failonerror="false">
<arg line="--config ${basedir}/behat.yml '${env.FEATURE_FILE}'"/>
</exec>
</target>
这意味着在 behat-cli 中:
bin/behat your.feature
开始于
ant -file <path to your ant-script> -D'FEATURE_FILE'='your.feature'
来自 behat --help 的相应行:
behat [--many config params we don't need right here] [features]
Arguments:
features Feature(s) to run. Could be:
- a dir (features/)
- a feature (*.feature)
- a scenario at specific line (*.feature:10).
- all scenarios at or after a specific line (*.feature:10-*).
- all scenarios at a line within a specific range (*.feature:10-20)
关于php - 通过 Saucelabs 的 Mink Extension.php(Selenium2) 解析 Behat/Mink Yml 文件配置中的动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034632/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!