Casperjs中fill提交表單遇到的問題

1.if you access internet with proxy please add ? ? ? ? ? ? --ignore-ssl-errors=true --ssl-protocol=any

?

2.casper.then*?and?casper.wait* 都是異步執行的

?

他們的調用,都是按堆棧中的順序來執行;也就是說,其他同步執行的函數,譬如,console.log,?casper.echo?andcasper.evaluate?,如果跟在異步函數后面,都是要立即執行的,這就導致不同步了

這種情況下,我們需要把同步執行的函數,放到wait的回調函數里面,

?

?

?

3.

Casperjs中fill的作用是填充表單值,并可以提交(可選),API:http://docs.casperjs.org/en/latest/modules/casper.html#fill,這里不詳述它的用法。
今天遇到一個問題,在此記錄一下。問題是這樣的:我一個可以正常提交form的casperjs腳本,在windows可以正常工作,之前在一臺centos的linux服務器上也可以正常工作,今天在一臺ubuntu12.04的服務器上卻不行,嘗試過各種辦法(降低casperjs/phantomjs版本等)都不行。調用fill方法后,打出warning消息:[warning] [remote] unable to submit form。為了查找原因,我都去翻看了它git上的源碼,想知道是哪塊兒出了問題,找到以下代碼塊兒:
// Form submission?if(submit) { this.evaluate(function_evaluate(selector) { varform = __utils__.findOne(selector); varmethod = (form.getAttribute('method') || "GET").toUpperCase(); varaction = form.getAttribute('action') || "unknown"; __utils__.log('submitting form to '+ action + ', HTTP '+ method, 'info'); varevent = document.createEvent('Event'); event.initEvent('submit', true, true); if(!form.dispatchEvent(event)) { __utils__.log('unable to submit form', 'warning'); return; } if(typeofform.submit === "function") { form.submit(); } else{ // http://www.spiration.co.uk/post/1232/Submit-is-not-a-function form.submit.click(); } }, selector);}
看下來似乎是沒有辦法dispatchEvent “submit”的event。但是此時我的心情是“朕知道了,但朕也無能為力”……
考慮到這應該是兼容性的問題,不能也不好做什么大改動。但又必須讓它正常工作。所以嘗試尋找其它等同效果的辦法。現在的問題是提交,而casperjs的api中除了這個fill方法沒有提交直接的submit方法。這該怎么辦法呢?接下來,我從casperjs的click api示例代碼中得到啟發。調用evaluate進入頁面然后調用原生js的submit方法提交表單。懷著試一下心態運行了一下,各環境都能正常工作!
所以,為了兼容性,Casperjs中這樣的寫法:

this.fill('form#contact-form', {'subject': 'I am watching you','content': 'So be careful.','civility': 'Mr','name': 'Chuck Norris','email': 'chuck@norris.com','cc': true,'attachment': '/Users/chuck/roundhousekick.doc'}, true);
應該寫成下面這樣比較好:
this.fill('form#contact-form', { 'subject': 'I am watching you', 'content': 'So be careful.', 'civility': 'Mr', 'name': 'Chuck Norris', 'email': 'chuck@norris.com', 'cc': true, 'attachment': '/Users/chuck/roundhousekick.doc'}, false);this.evaluate(function(){ document.querySelector('form#contact-form').submit();});

轉載于:https://www.cnblogs.com/SZLLQ2000/p/5336021.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374940.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374940.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xuggler視頻處理簡介

注意:這是我們的“ Xuggler開發教程 ”系列的一部分。 隨著互聯網上視頻的爆炸式增長,開發人員經常需要在其應用程序中操縱視頻內容。 Xuggler是Java開發人員的免費開放源代碼庫,可用于實時解壓縮,處理和壓縮錄制的視頻或實時視頻…

軟件測試中條件覆蓋,路徑覆蓋,語句覆蓋,分支覆蓋的區別

轉:軟件測試中條件覆蓋,路徑覆蓋,語句覆蓋,分支覆蓋的區別 舉個例子吧 if A and B then Action1 if C or D then Action2 語句覆蓋最弱,只需要讓程序中的語句都執行一遍即可 …

Spring_講解

http://s,i,s,h,u,o,k.com/forum/blogPost/list/6174.html轉載于:https://www.cnblogs.com/gisblogs/p/4579162.html

使用Spring AspectJ和Maven進行面向方面的編程

Spring框架附帶AOP支持。 實際上,如Spring參考文檔中所述 , “ Spring的關鍵組件之一是AOP框架。 盡管Spring IoC容器不依賴于AOP,這意味著您不需要使用AOP,但AOP是對Spring IoC的補充,以提供功能強大的中間件解決方案…

hadoop5--mapreduce設計模式

運行結果附圖 本節課程主要內容為學習MapReduc設計模式,并編寫java程序對日志文件進行處理。 課本上介紹的MapReduce的設計模式主要包含:計數(Counting),分類(Classification),過濾處理(Filtering),排序(Sorting),去重計數(Distinct Counting),相關計數(Cross-Corre…

ES5中新增的Array方法詳細說明

http://www.zhangxinxu.com/wordpress/2013/04/es5%E6%96%B0%E5%A2%9E%E6%95%B0%E7%BB%84%E6%96%B9%E6%B3%95/轉載于:https://www.cnblogs.com/lmw425317/p/5339539.html

jqGrid,REST,AJAX和Spring MVC集成

兩年多以前,我寫了一篇關于兩個如何在Struts2中實現優雅的CRUD的文章。 實際上,我必須就該主題寫兩篇文章,因為該主題如此廣泛。 今天,我采用了一套更為流行的,完善的框架和庫,采用了更為輕量級的現代方法。…

Java-馬士兵設計模式學習筆記-代理模式--動態代理 修改成可以代理任意接口

一、概述 1.目標:把Proxy修改成可以代理任意接口及其任意方法 2.思路: (1)代理任意接口:把接口類型作為參數傳給Proxy的newProxyInstance(Class interfze) (2)代理任意方法:用interfze.getMethods()取出所有方法,拼接實…

PTA習題

PTA習題 PTA浙大版《C語言程序設計(第3版)》 題目集5-6 水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等于它本身。 本題要求編寫兩個函數,一個判斷給定整數是否水仙花數,…

acdream 1409 Musical 狀壓DP

鏈接:http://acdream.info/problem?pid1409 題意:整個國家有n座城市,每座城市有三種粉絲。 第一種一周看一場音樂劇,挑選的音樂劇是已經在周圍城市播放上演過的次數最多的音樂劇中的隨機一個。 另外一種每天看一場音樂劇&#xf…

真正的模塊化Web應用程序:為什么沒有開發標準?

OSGI , SpringSource , Jboss模塊 ,J2EE和清單永遠不會結束。所有這些技術都向他們的最終用戶/開發人員保證了相同的東西,或多或少是Java模塊化Web應用程序(?)。 但是,我們當中有多少…

C語言5-7習題

本題要求實現一個函數&#xff0c;用下列公式求cos(x)的近似值&#xff0c;精確到最后一項的絕對值小于e&#xff1a; #include <stdio.h> #include <math.h>double funcos( double e, double x );int main() { double e, x;scanf("%lf %lf", &…

JDBC批處理executeBatch

JDBC運行SQL聲明&#xff0c;有兩個處理接口&#xff0c;一PreparedStatement,Statement,一般程序JDBC有多少仍然比較PreparedStatement 只要運行批處理&#xff0c;PreparedStatement少一點Statement ps conn.prepareStatement(sql); for(int i 0;i<10;i){ ps.setString(…

BC div2補題以及 復習模除 逆元__BestCoder Round #78 (div.2)

第一題沒話說 智商欠費 加老柴輔導終于過了 需要在意的是數據范圍為2的63次方-1 三個數相加肯定爆了 四邊形的定義  任意邊小于其余三邊之和 換句話說就是  最長邊小于其余三邊之和 這樣的話問題轉化為 最長邊依次減其余三邊的結果是否小于等于0 還有一點是題目出現0邊 即最…

習題6-1 分類統計字符個數 (15 分)

本題要求實現一個函數&#xff0c;統計給定字符串中英文字母、空格或回車、數字字符和其他字符的個數。 函數接口定義&#xff1a; void StringCount( char s[] );其中 char s[] 是用戶傳入的字符串。函數StringCount須在一行內按照 letter 英文字母個數, blank 空格或回車…

Servlet 3.0異步處理可將服務器吞吐量提高十倍

Servlet是Java中處理服務器端邏輯的主要組件&#xff0c;新的3.0規范引入了一些非常有趣的功能&#xff0c;其中異步處理是最重要的功能之一。 可以利用異步處理來開發高度可伸縮的Web應用程序。 使用此功能可以有效地構建Web 2.0站點和AJAX應用程序。 我們的JCG合作伙伴之一To…

使用secureCRT連接VMware-Ubuntukylin虛擬機

使用SecureCRT連接VMware時總是提醒主機拒絕連接。這時可以使用sudo apt-get install openssh-server openssh-client&#xff0c;在主機上安裝ssh. 安裝成功后&#xff0c;可以連接到主機了。 如果顯示遠程主機拒絕連接。則可以使用如下方法。 VMware里面裝的是Ubuntukylin版本…

加載音頻Audio

var cameraAudio new Audio(); cameraAudio.src camera.wav;// 設置音頻對象的屬性,預加載視頻 var options_audio { preload : auto } for(var key in options_audio){ if(options_audio.hasOwnProperty(key) && (key in cameraAudio)){ cameraAudio[key] opti…

習題6-2 使用函數求特殊a串數列和 (20 分)

給定兩個均不超過9的正整數a和n&#xff0c;要求編寫函數求aaaaaa?aa?a&#xff08;n個a&#xff09;之和。 int fn( int a, int n ); int SumA( int a, int n );其中函數fn須返回的是n個a組成的數字&#xff1b;SumA返回要求的和。 我的代碼&#xff1a; int fn( int a, i…

Java中可怕的雙重檢查鎖定成語

本文討論的問題不是新問題&#xff0c;但即使是經驗豐富的開發人員也仍然很棘手。 單例模式是常見的編程習慣。 但是&#xff0c;當與多個線程一起使用時&#xff0c;必須進行某種類型的同步&#xff0c;以免破壞代碼。 Khangaonkar報告中的 JCG合作伙伴Manoj Khangaonkar在一篇…