繁体   English   中英

Ruby Selenium开始救援

[英]Ruby Selenium begin rescue

我将Cucumber与Ruby和Selenium结合使用。 在这种情况下,我需要检查该元素是否不在页面上,当我在Cucumber步骤中执行此操作时

    Step file:
    begin
     expect(checkout_page.city_acctdetails.displayed?).to eql false
    rescue Selenium::WebDriver::Error::NoSuchElementError
     puts "City dropdown is not present"
     false
    end

它就像一个魅力。 当我尝试通过将as方法放置在另一个文件/帮助器中来进行操作时

 RubyHelper.rb file
   def self.not_present(locator)
    begin
      locator.displayed?
    rescue Selenium::WebDriver::Error::NoSuchElementError
      puts "Not present"
      false
    end
  end

所以当我在黄瓜步骤文件中更改时

RubyHelper.not_present(checkout_page.city_acctdetails)

我收到错误消息:无法找到元素:{}(Selenium :: WebDriver :: Error :: NoSuchElementError)

要求声明:

  #BDD framework that makes feature files running
require 'cucumber'

#Control remote browsers
require 'selenium-webdriver'

#Run tests in parallel
require 'parallel_tests'

#Use expect().to for verifying result
require 'rspec'

#Key value format for storing text data
require 'yaml'

红宝石黄瓜的魔术依赖于一种被称为World对象的东西。 要使您的RubyHelper文件可用于您的步骤定义,您需要:

  1. 将辅助方法包装在模块中
  2. 告诉Cucumber将模块包含在每个方案的每个World对象中

RubyHelper.rb文件

require 'cucumber'
require 'selenium-webdriver'
require 'rspec'
module MyHelper
  def not_present(locator)
    begin
      locator.displayed?
    rescue Selenium::WebDriver::Error::NoSuchElementError
      puts "Not present"
      false
    end
  end
end
World(MyHelper)

也许您可以尝试sleep或等待该事件加载。 当您运行测试时,测试已经执行,但是元素还不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM