2014-05-15 39 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中,它将像测试的实况视频一样工作。

相关问题