2013-03-06 163 views
0

我正在使用Process p=Runtime.getRuntime().exec來打開網頁。我將使用什麼事件處理程序來使用Java單擊打開的網頁上的按鈕?單擊網頁上的按鈕

+1

您試圖完成的更大目標是什麼?你有沒有考慮過使用無頭瀏覽器呢? – 2013-03-06 05:02:42

+3

[Selenium]的工作(http://openwritings.net/public/selenium/first-selenium-application-java)! – 2013-03-06 05:02:50

回答

2

沒有,真的。您對所啓動的流程沒有任何如此細緻的控制;您所獲得的只是流程中的輸入,輸出和錯誤流。

如果你想與Java網頁交互(但不在屏幕上顯示),你可以看看HtmlUnit

您可以配置HtmlUnit以模擬特定的瀏覽器(用戶代理標頭,cookie策略等)。

如果一切都失敗了,你可以編寫一個小的JavaScript控制器,並直接在瀏覽器中打開它,而不是目標網頁。然後,JavaScript控制器可以與您的應用程序進行對話,獲取指令(如要導航到哪個頁面)並對這些指令採取行動。 Selenium是個不錯的選擇,但可能需要您安裝瀏覽器插件。

+0

我想完成的是登錄surveymonkey並下載一個excel文件。我的程序已經可以做到這一點,但由於缺乏瀏覽器,Bluecoat安全性無法在我的工作域中使用。所以我想如果我可以從瀏覽器打開並控制它,它會以這種方式工作。思考? – patrick 2013-03-06 05:07:40

+0

@patrick - 他們究竟是如何檢測到「缺少瀏覽器」?無論如何,我已經用另一種方法更新了我的答案 – radai 2013-03-06 05:13:25

+0

我認爲javascript可能會使這個項目失控。也許不是。但我缺少瀏覽器的意思是與瀏覽器中的用戶憑證相關聯的身份驗證證書。如果您認爲它有幫助,我可以向您發佈我得到的錯誤。因爲我的代碼能正常工作,所以當我嘗試從我的工作域中運行它時就不行。 – patrick 2013-03-06 05:28:52

0

加入來自radai的回答和評論

a。 「有計劃已經這樣做了,但由於缺乏瀏覽器,因爲Bluecoat的安全問題,它不適用於我的工作領域」 - 這不是因爲缺少瀏覽器。這是因爲你的java進程沒有代理憑證來打開頁面。來自該工具的http調用通過您的代理進行導向。您可以嘗試設置具有所需屬性的環境。

如果您正在運行的命令行工具 - 你可以嘗試這樣的事情

JAVA_FLAGS=-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800 
java ${JAVA_FLAGS} <java_class_to_run> 

灣如果您打算重新創建該工具 - jsoup是另一個不錯的選擇

+0

我打算從命令行運行。我會檢查這一點。 – patrick 2013-03-06 05:40:38

+0

你可以更具體一點如何添加代理?我有點不清楚嗎? – patrick 2013-03-06 05:44:51

+0

所有來自您的機器/網絡中任何機器的電話都必須通過bluecoat代理才能打到外部網站。在您的工具中,由於您沒有提供代理服務器的詳細信息,因此該呼叫不會脫離您的網絡。 – Richie 2013-03-06 05:48:52