有没有办法彻底终止测试?

时间:2018-10-25 15:00:38

标签: ruby selenium

使用Selenium,Ruby

我正在尝试学习在对象不存在时结束测试的正确方法。例如,我有一个调用函数“ Click_Login”的测试,该函数依次转到该函数并返回对象引用或文本“ Stop Test”(如果不存在)。那部分工作正常。

但是,在关闭浏览器之后,测试将继续进行,并尝试运行varLoginBtn.click并失败,因为 Stop Test.click 不存在。我认为该测试将在driver.quit之后停止,而不继续进行varLoginBtn.click。

我的目标是在对象不存在的情况下彻底停止测试。我可能做错了。

        #The test.rb
        varLoginBtn = toNavigate.Click_LogIn(driver) #calls function down below.
        if varLoginBtn == "Stop Test"
            driver.quit
        end
        varLoginBtn.click  #click on the button


    #functions.rb
    #in the Class toNavigate
    #Login Button 
    def Click_LogIn(driver)
        puts "In the login"
        wait = Selenium::WebDriver::Wait.new(:timeout => 15)
       begin
         element= wait.until{driver.find_element(:xpath, "//*[@xas-string='SDE_LOG_INN']")} #Log_INN is intentional I want it to fail.
        return element
       rescue 
          puts "The Login button did not exist"
          return "Stop Test"
       end
     end

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您无需解救,您可以设置nil为零,并且可以使用abort退出带有消息的脚本

但也可以将snake_case用于def ruby​​方法

def click_login(driver)
  puts "In the login"
  wait = Selenium::WebDriver::Wait.new(:timeout => 15)
  if element = wait.until{driver.find_element(:xpath, "//*[@xas-string='SDE_LOG_INN']")} #Log_INN is intentional I want it to fail.
    return element
  else
    puts 'The Login button did not exist'
    abort 'Stop Test'
  end
end

答案 1 :(得分:0)

这是一种过度设计的方法...为什么不只在发生这种情况时抛出异常,并通过良好的提示让测试消亡?像

...
rescue 
    raise "The Login button did not exist"
end

您的测试库应该能够处理此问题,并打印出可用于调查等的好消息。

详细了解ruby here中的异常。