【发布时间】:2014-06-10 15:27:31
【问题描述】:
我知道可以将 phantomJS 与 Watir-Webdriver 一起使用,但是在我决定使用(默认)无头模式之前,是否有一些“模式”我可以通过它来实际查看它在做什么?
【问题讨论】:
-
phantomjs除了headless没有其他模式。您可能需要使用其他浏览器:chrome、firefox、slimerjs。
标签: ruby phantomjs watir-webdriver
我知道可以将 phantomJS 与 Watir-Webdriver 一起使用,但是在我决定使用(默认)无头模式之前,是否有一些“模式”我可以通过它来实际查看它在做什么?
【问题讨论】:
标签: ruby phantomjs watir-webdriver
不确定模式,但你可以试试这个:
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'
您将获得如下所示的输出:
【讨论】:
扩展其他响应,您可以在单击或向元素发送键之前自动进行屏幕截图。
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 中,该 GIF 就像您的测试现场视频一样工作。
【讨论】:
就像 artjom B 写的一样,在 PhantomJS 中除了 headless 之外没有其他模式的可能性。
所以要么更改浏览器 - 我通过更改 CMD 框中的环境变量使我的所有测试都能够在每个浏览器中运行。
或者使用以下方法截取大量屏幕截图: @b.screenshot.save 'filename' - 即使您继续使用 PhantomJS,您也可以按照流程进行操作
【讨论】:
您可以使用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));
};
【讨论】: