我在单独的文件中写了一个小的macrodef:
macrodefs.xml
<macrodef name="do-cool-stuff">
<attribute name="message"/>
<sequential>
<echo message="@{message}" />
</sequential>
</macrodef>
Run Code Online (Sandbox Code Playgroud)
我有第二个文件,我的主要构建文件:
build.xml文件
<target name="build">
<!-- do this and that -->
<!-- cheking out macrodefs.xml via CVS -->
<ant antfile="macrodefs.xml" target="do-cool-stuff" >
<property name="message" value="Hello, World!" />
</ant>
</target>
Run Code Online (Sandbox Code Playgroud)
你可能会猜到这不会起作用.错误消息类似于:
Target 'do-cool-stuff' does not exist in this project.
Run Code Online (Sandbox Code Playgroud)
我发现唯一可行的解决方案是在macrodefs.xml中提供额外的目标来转发ant调用.
是否有可能从另一个文件中调用macrodef?
提前致谢.
我想使用apache中的mod_expires模块设置cache-headers.我的配置看起来像这样:
<LocationMatch ^/static >
ExpiresDefault "access plus 1 years"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
问题是,文件是由我无法控制的第三个系统生成的.这些系统提供带有以下标题的文件:
Date Mon, 24 Oct 2011 08:39:02 GMT
Cache-Control no-cache,no-store,must-revalidate
Pragma no-cache
Expires Thu, 01 Dec 1994 16:00:00 GMT
Run Code Online (Sandbox Code Playgroud)
这些标头使得无法使用mod_expires设置缓存标头.http://httpd.apache.org/docs/2.2/mod/mod_expires.html告诉我们原因:
当Expires标头已经是服务器生成的响应的一部分时,例如,当由CGI脚本生成或从源服务器代理时,此模块不会更改或添加Expires或Cache-Control标头.
是否有任何可能的方法来规避此规则并使用mod_expires覆盖标头?
更新: 一种可能的解决方案是,为了避免此限制,仅使用mod_headers来设置缓存标头.不幸的是,这不是一个替代方案,因为必须计算这些值.
谢谢它提前.
我喜欢新Chrome中引入的新仿真功能.事实上,我喜欢用它来测试移动网站的多种分辨率/设备.为此,我需要对仿真功能进行某种控制.
有没有办法控制希望设备被模拟?
知道如何开始OpenQA.Selenium.Chrome.ChromeDriver模拟移动设备会很高兴.
提前致谢.
google-chrome webdriver google-chrome-devtools selenium-chromedriver selenium-webdriver
我创建了一个小的 api 来动态生成测试数据。每次调用都会创建一个新用户并返回创建的数据。
要加载数据,我使用包request:
var flow = protractor.promise.controlFlow();
var result = flow.execute(function() {
var defer = protractor.promise.defer();
request('http://localhost/test/recipe/person', function (error, response, body) {
if (!error && response.statusCode === 200) {
defer.fulfill(JSON.parse(body));
}
});
return defer.promise;
});
Run Code Online (Sandbox Code Playgroud)
要使用检索到的数据,我必须解决承诺并在回调中继续测试脚本:
result.then(function(data) {
element(by.model('username')).sendKeys(data.person.email);
element(by.model('password')).sendKeys('test');
$('button[type="submit"]').click();
});
Run Code Online (Sandbox Code Playgroud)
我不喜欢这种回调处理以及它可能导致的地狱。除此之外,Protractor 在隐藏这个混乱的回调处理方面非常出色。所以,问题是:
如何使用异步调用的结果?
最后,我想执行如下代码:
var flow = protractor.promise.controlFlow();
var result = flow.execute(function() {...});
element(by.model('username')).sendKeys(result.person.email);
//...
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在寻找一种在sml中以字符串形式执行的方法.例如:
val evalResult = eval "1 + 1";
> val it = 2 : int
Run Code Online (Sandbox Code Playgroud)
我无法相信我没有找到关于这个主题的任何资源......
任何帮助表示赞赏.
ajax ×1
ant ×1
apache ×1
build ×1
http ×1
javascript ×1
macrodef ×1
mod-expires ×1
promise ×1
protractor ×1
sml ×1
smlnj ×1
webdriver ×1