casperjs 各控件实现方法
2016-01-26 15:18
639 查看
1.LINK
this.click('a[href^="020_test_source_c1.html"]'); -- 后方一致
this.click('a[href*="mhostname=algpae0a"]'); -- 部分一致
this.click('a'); -- 画面上只有一个link的话可用
2.下拉框
A.下拉框里既定的某个值选定
this.fillSelectors("form[name='form']",{
"select[name='projectid']": 'test'});
B.下拉框里的内容可变,将第几个值选中
//プルダウンにINDEX 1を設定
this.evaluate(function(){
document.querySelector('select[name = "version"]').selectedIndex = 1;
return true;
});
//プルダウンの値を取得
var va = this.evaluate(function(){
return document.querySelector('select[name = "version"]').value;
});
this.fillSelectors("form[name='form']",{
"select[name='version']": va});
3.单选框
this.evaluate(function(){
document.querySelector("input[type='radio'][name = 'url']").click();
});
this.evaluate(function(){
document.querySelector("input[type='radio'][value='prd|alge|algew|now']").click();
});
4.复选框
A.固定值的框选中
this.evaluate(function(){
document.querySelector("input[type='checkbox'][name = 'all']").click();
});
B.框的内容是可变的
//パス一覧を取得する
var Nodes = this.getElementsAttribute("input[type='checkbox'][name=path]",'value');
for(var i=0; i<Nodes.length; i++){
this.echo(Nodes[i]);
//"/G"を含まないパスを選択し除外する
if (Nodes[i].indexOf("/G") == -1) {
this.evaluate(function(v){
document.querySelector("input[type='checkbox'][name='path'][value ='"+v+"']").click();
},Nodes[i]);
}
}
5.按钮
this.evaluate(function(){
document.querySelector("input[type='submit'][value=' 複製 ']").click();
});
this.evaluate(function(){
document.querySelector("input[type='submit'][name='approval']").click();
});
this.evaluate(function(){
document.querySelector("input[type='button'][value=' Subversion資源払出 ']").click();
});
6.确认窗口
// 複製をクリック
this.evaluate(function(){
document.querySelector("input[type='submit'][value=' 複製 ']").click();
});
casper.setFilter("page.confirm",function(message){
self.received = message;
this.echo('message to confirm:' + message);
return true;
});
7.文本框
this.evaluate(function(){
document.querySelector("input[name='si_key']").setAttribute("value","test");
});
this.evaluate(function(){
document.querySelector("input[name='from']").setAttribute("value","/");
});
8.文件下载与上传
A.下载
//システム日付
var now = new Date();
var yyyymmdd = now.getFullYear()+( "0"+( now.getMonth()+1 ) ).slice(-2)+( "0"+now.getDate() ).slice(-2);
var releaseNo = yyyymmdd+"_test"; //リリース番号
var logdir = "test/"+yyyymmdd+"_01"; // ログ格納場所
casper.then(function() {
this.echo('Main Menu');
this.wait(1000, function() {
this.capture(logdir +'/test.png');
var downloadurl = ""
var listtext = releaseNo+"_LIST.txt"; //ファイル名
downloadurl = "https://XX.XX.XX.XX:XXXX/Common/download.html?mode=ascii;dir=/Library/RealVersion/log/Release/prd/"+releaseNo+"/.rvn/list/Release/"+listtext;
this.download(downloadurl,'slm/releasefile/'+listtext);
});
});
B.上传
casper.then(function() {
this.wait(1000, function() {
this.capture(logdir +'/test.png');
this.page.switchToChildFrame(0);
this.page.switchToChildFrame('right');
var listtext = releaseNo+"_LIST.txt"; //ファイル名
//リストファイルをアップロードする
this.page.uploadFile("input[name='check_file']",'D:/casperjs/bat/releasefile/'+listtext);
//準備リスト確認クリック
this.evaluate(function(){
document.querySelector("input[type='submit'][value='確認']").click();
});
this.page.switchToParentFrame();
this.page.switchToParentFrame();
});
});
this.click('a[href^="020_test_source_c1.html"]'); -- 后方一致
this.click('a[href*="mhostname=algpae0a"]'); -- 部分一致
this.click('a'); -- 画面上只有一个link的话可用
2.下拉框
A.下拉框里既定的某个值选定
this.fillSelectors("form[name='form']",{
"select[name='projectid']": 'test'});
B.下拉框里的内容可变,将第几个值选中
//プルダウンにINDEX 1を設定
this.evaluate(function(){
document.querySelector('select[name = "version"]').selectedIndex = 1;
return true;
});
//プルダウンの値を取得
var va = this.evaluate(function(){
return document.querySelector('select[name = "version"]').value;
});
this.fillSelectors("form[name='form']",{
"select[name='version']": va});
3.单选框
this.evaluate(function(){
document.querySelector("input[type='radio'][name = 'url']").click();
});
this.evaluate(function(){
document.querySelector("input[type='radio'][value='prd|alge|algew|now']").click();
});
4.复选框
A.固定值的框选中
this.evaluate(function(){
document.querySelector("input[type='checkbox'][name = 'all']").click();
});
B.框的内容是可变的
//パス一覧を取得する
var Nodes = this.getElementsAttribute("input[type='checkbox'][name=path]",'value');
for(var i=0; i<Nodes.length; i++){
this.echo(Nodes[i]);
//"/G"を含まないパスを選択し除外する
if (Nodes[i].indexOf("/G") == -1) {
this.evaluate(function(v){
document.querySelector("input[type='checkbox'][name='path'][value ='"+v+"']").click();
},Nodes[i]);
}
}
5.按钮
this.evaluate(function(){
document.querySelector("input[type='submit'][value=' 複製 ']").click();
});
this.evaluate(function(){
document.querySelector("input[type='submit'][name='approval']").click();
});
this.evaluate(function(){
document.querySelector("input[type='button'][value=' Subversion資源払出 ']").click();
});
6.确认窗口
// 複製をクリック
this.evaluate(function(){
document.querySelector("input[type='submit'][value=' 複製 ']").click();
});
casper.setFilter("page.confirm",function(message){
self.received = message;
this.echo('message to confirm:' + message);
return true;
});
7.文本框
this.evaluate(function(){
document.querySelector("input[name='si_key']").setAttribute("value","test");
});
this.evaluate(function(){
document.querySelector("input[name='from']").setAttribute("value","/");
});
8.文件下载与上传
A.下载
//システム日付
var now = new Date();
var yyyymmdd = now.getFullYear()+( "0"+( now.getMonth()+1 ) ).slice(-2)+( "0"+now.getDate() ).slice(-2);
var releaseNo = yyyymmdd+"_test"; //リリース番号
var logdir = "test/"+yyyymmdd+"_01"; // ログ格納場所
casper.then(function() {
this.echo('Main Menu');
this.wait(1000, function() {
this.capture(logdir +'/test.png');
var downloadurl = ""
var listtext = releaseNo+"_LIST.txt"; //ファイル名
downloadurl = "https://XX.XX.XX.XX:XXXX/Common/download.html?mode=ascii;dir=/Library/RealVersion/log/Release/prd/"+releaseNo+"/.rvn/list/Release/"+listtext;
this.download(downloadurl,'slm/releasefile/'+listtext);
});
});
B.上传
casper.then(function() {
this.wait(1000, function() {
this.capture(logdir +'/test.png');
this.page.switchToChildFrame(0);
this.page.switchToChildFrame('right');
var listtext = releaseNo+"_LIST.txt"; //ファイル名
//リストファイルをアップロードする
this.page.uploadFile("input[name='check_file']",'D:/casperjs/bat/releasefile/'+listtext);
//準備リスト確認クリック
this.evaluate(function(){
document.querySelector("input[type='submit'][value='確認']").click();
});
this.page.switchToParentFrame();
this.page.switchToParentFrame();
});
});
相关文章推荐
- ASP.NET使用WebMethod
- ASP.NET使用Ajax总结
- ASP.NET前后台互相访问
- casperjs jsファイルサンプル1
- CASPERJSのbatファイル実行方法
- MVC aspx
- window system doesn't support opengl (raspberry pi)
- Web Servers in Visual Studio for ASP.NET Web Projects
- asp.net 运行时,"未能映射路径"
- 轉自:提高 ASP.NET Web 应用性能的 24 种方法和技巧
- Asp.Net Web Form 前后台传值
- SQL Server 2005安装时各种问题汇总一、需要64位的ASP.Net才能安装
- ASP.NET 页面基本优化.
- Code review aspects
- ASP.NET Core 1.0 基础之配置
- Creating the Help Page in ASP.NET Web API
- Backup Raspbx system
- 1.casperjs的安装与环境配置
- ASP.NET网站如何实现不同域名解析不同的子目录
- asprintf