【问题标题】:How to take screenshot in selenium webdriver with ruby with date and time included in screenshot name?如何使用 ruby​​ 在 selenium webdriver 中截取屏幕截图名称中包含日期和时间的屏幕截图?
【发布时间】:2016-09-26 10:05:52
【问题描述】:

我正在尝试在每个步骤中获取当前日期和时间的屏幕截图,但出现错误

Error: test_login(Login_page): Argument Error: wrong number of arguments (1 for 0)

代码是

 def setup
     @driver = Selenium::WebDriver.for :chrome
     @driver.manage.window.maximize
     @driver.navigate.to "https://www.findmedecor.com"

      wait = Selenium::WebDriver::Wait.new(:timeout => 10)

    screenshot()
  end

  def test_login

    @driver.find_element(:class,'open-overlay').click
    screenshot(DateTime.now)
    wait = Selenium::WebDriver::Wait.new(:timeout => 10)
    login_email = wait.until {
        element = @driver.find_element(:name, "login_email")
        element if element.displayed?
    }

    login_email.send_keys("suwarna.wade@rohagroup.com")
    puts "Test Passed: login pop up found" if login_email.displayed?
    screenshot(DateTime.now)
    @driver.find_element(:id,'pass').send_keys('123456')
    @driver.find_element(:id,'btn_login').click

    puts "Logged in successfully"

    puts "Time of test = ", DateTime.now
    screenshot(DateTime.now)
  end
  $i = DateTime.now
  def screenshot
  @driver.save_screenshot("screenshot #{'$i'}.png")
    $i= +1
  end

end

【问题讨论】:

  • 错误在哪一行?你用错误数量的参数调用什么函数?您尝试过什么来解决这个问题?
  • 在 def setup 中调用截图函数时出错
  • 我猜您传递给.save_screenshot() 的文件名有问题。您是否尝试过像"screenshot.png" 这样的简单路径?我猜是 DateTime.now 的格式导致了问题。
  • 是的,没错@JeffC。但我必须截图,名字中提到时间和日期。那我该怎么做呢??

标签: ruby selenium-webdriver testunit


【解决方案1】:

问题在于Time.now 返回的格式类似于'2016-09-28 04:45:40 +0000',这在Windows 上不是有效的文件名。您可以将日期/时间重新格式化为有效的格式,例如

Time.now.strftime('%Y-%m-%d_%H.%M.%S')

输出2016-09-27_23.33.59,然后将其放入您的文件名中。

http://ruby-doc.org/core-2.2.0/Time.html#method-i-strftime

【讨论】:

    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多