是否可以在Watir-WebDriver中显示PhantomJS?

时间:2014-05-15 14:40:48

标签: ruby phantomjs watir-webdriver

我知道可以将phantomJS与Watir-Webdriver一起使用,但是在我决定使用(默认)无头模式之前,是否有一些“模式”可以传递它以实际看到它在做什么?

4 个答案:

答案 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'

您将获得如下所示的输出: screenshot of step 2

答案 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)

您可以使用onResourceRequestedonResourceReceived 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));
};