我知道可以将phantomJS与Watir-Webdriver一起使用,但是在我决定使用(默认)无头模式之前,是否有一些“模式”可以传递它以实际看到它在做什么?
答案 0 :(得分: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'
您将获得如下所示的输出:
答案 1 :(得分: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中,这将像测试的实时视频一样。
答案 2 :(得分:1)
就像artjom B写作一样,PhantomJS中除了无头之外其他模式是不可能的。
所以要么改变浏览器 - 我通过更改CMD框中的环境变量,使我的所有测试都能够在每个浏览器中运行。
或者拍摄很多截图: @ b.screenshot.save'filename' - 即使您继续使用PhantomJS,也可以按照流程进行操作
答案 3 :(得分:0)
您可以使用onResourceRequested和onResourceReceived api记录所有请求和回复。我这样做的是我在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));
};