2014-05-15 68 views
3

我知道用Watir-Webdriver可以使用phantomJS,但是在我決定使用(默認)無頭模式之前,我可以通過它來實際看到它在做什麼嗎?是否有可能在Watir-WebDriver中顯示PhantomJS?

+2

除無頭之外,沒有其他的幻像模式。您可能需要使用其他瀏覽器:chrome,firefox,slimerjs。 –

回答

0

您可以將所有請求和響應使用onResourceRequested和登錄api's。我爲我在casperjs中寫下的刮板做了這個,它使用下面的phantomjs。 Watir-Webdriver應該爲phantomjs的webPage對象提供一些鉤子。

page.onResourceRequested = function(requestData, networkRequest) { 
    console.log('Request (#' + requestData.id + '): ' + JSON.stringify(requestData)); 
}; 

page.onResourceReceived = function(response) { 
    console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response)); 
}; 
+0

不幸的是沒有這樣的鉤子。 – pguardiario

1

就像artjom B正在寫的一樣,除PhantomJS以外的其他模式都是不可能的。

因此,要麼更改瀏覽器 - 我已通過更改CMD框中的環境變量使所有測試能夠在每個瀏覽器中運行。

否則採取了很多的截圖有: @ b.screenshot.save名「」 - 你可以按照流過,即使你繼續使用PhantomJS上

2

不確定的模式,但你可以試試這個:

require 'watir-webdriver' 
b = Watir::Browser.new :phantomjs 
b.screenshot.save 'step1.png' 
b.goto "www.google.com" 
b.screenshot.save 'step2.png' 
b.url #"http://www.google.com/" 
b.screenshot.save 'step3.png' 
b.title #"Google" 
b.screenshot.save 'step4.png' 

你會得到輸出,看起來像這樣: screenshot of step 2

2

擴展其他響應,您可以在單擊或將鍵發送到元素之前自動執行截圖。

class Screenshotter < Selenium::WebDriver::Support::AbstractEventListener 
    def before_click(_, driver) 
    driver.save_screenshot("screenshot-#{Time.now.to_i}.png") 
    end 

    def before_change_value_of(_, driver) 
    driver.save_screenshot("screenshot-#{Time.now.to_i}.png") 
    end 
end 

browser = Watir::Browser.new(:phantomjs, listener: Screenshotter.new) 

展望未來,您可以將所有截圖加入到GIF中,它將像測試的實況視頻一樣工作。

相關問題