2016-09-26 4 views
-1

Je suis en train de faire une capture d'écran à chaque étape avec la date et l'heure, mais je reçois l'erreurComment faire une capture d'écran dans webdriver selenium avec ruby ​​avec date et heure inclus dans le nom de capture d'écran?

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

Le code est

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("[email protected]") 
    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 
+0

Sur quelle ligne est l'erreur? Quelle fonction appelez-vous avec le mauvais nombre d'arguments? Qu'avez-vous essayé de résoudre le problème? – JeffC

+0

erreur est lors de l'appel de la fonction de capture d'écran dans la configuration def –

+0

Je suppose que quelque chose ne va pas avec le nom de fichier que vous passez à '.save_screenshot()'. Avez-vous essayé un chemin simple comme '" screenshot.png "'? Je suppose que c'est le format de DateTime.now qui cause des problèmes. – JeffC

Répondre

1

Le problème est que Time.now retourne un format comme '2016-09-28 04:45:40 +0000' qui n'est pas un nom de fichier valide sur Windows. Vous pouvez juste reformater la date/heure à quelque chose comme valide

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

qui sort 2016-09-27_23.33.59 puis le mettre dans votre nom de fichier.

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

+0

cela a fonctionné parfaitement :). Je vous remercie. –