Есть ли способ отменить тест чисто? - PullRequest
0 голосов
/ 25 октября 2018

Используя 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 голосов
/ 25 октября 2018

Это сверхмощный способ сделать это ... почему бы просто не выдать исключение, когда это происходит, и позволить тесту умереть с хорошим сообщением?Что-то вроде

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

Ваша тестовая библиотека должна быть в состоянии справиться с этим и напечатать приятное сообщение, которое вы можете использовать для расследования и т. Д.

Подробнее об исключениях в ruby ​​ здесь.

0 голосов
/ 25 октября 2018

Вам не нужно спасать, у вас есть условие, если ноль, и вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...