2016-08-09 51 views
0

我使用Watir Webdriver和一個無頭(phantomjs)瀏覽器來轉到一個網站,登錄並點擊並使用javascript提交按鈕下載文件。當我點擊提交時,我重定向到302到一個不同的地址,我可以看到我的網絡下。這是要下載的文件的URL。我使用屏幕截圖去除,所以我可以看到phantomjs工作正常,但它擊中提交按鈕後,沒有任何反應。整個程序在firefox上也能正常工作。使用watir webdriver,我怎樣才能得到這個鏈接,並將它保存在數據庫中,並重定向我的phantomjs以使用該鏈接下載文件?我嘗試閱讀github pull請求,官方文檔和博客文章,但我我無法達成任何解決方案。請向我提供建議或解決方案。即使有一個詞的建議也表示讚賞,因爲它可能會幫助我解決問題。我嘗試了'http request headers'但沒有成功。我有browser.cookie.to_abrowser.headers只給我object這樣Watir::HTMLElementCollection:0x000000024b88c0。謝謝使用Watir Webdriver和phantomjs下載文件

+0

您需要使用自定義的Firefox配置文件。我最近想出瞭如何使用硒來做到這一點,雖然我沒有嘗試過幻影。請參閱[這裏](https://gist.github.com/MaxPleaner/9d73674916a64bf7f281eac5110972b8)代碼片段 –

+0

感謝@maxpleaner,但我正在尋找無頭解決方案。 – Unicornz

+0

其實我是在代碼來自的項目中使用headless。如果你在啓動firefox驅動程序之前開始無頭,那麼它將處於無頭的範圍。 –

回答

1

我沒有找到解決方案,我的問題使用Phantomjs,但我已經解決了watirwebdriver(0.9.1)headless和firefox(44.0)的問題。 這些是我用過的設置。

profile = Selenium::WebDriver::Firefox::Profile.new 
profile['download.prompt_for_download'] = false 
profile['browser.download.folderList'] = 2 # custom location 
profile['browser.download.dir'] = download_directory 
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf" 
profile['pdfjs.disabled'] = true 
profile['pdfjs.firstRun'] = false 
headless = Headless.new 
headless.start 

browser = Watir::Browser.new(:firefox, :profile => profile) 
browser.goto 'www.google.com' 
browser.window.resize_to(1280, 720) 
puts browser.title 
puts browser.url