Ruby Selenium开始救援

时间:2016-03-01 23:26:37

标签: ruby selenium cucumber nosuchelementexception

我使用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

它就像一个魅力。 当我尝试做一些事情,比如把方法放在另一个文件/助手

 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'

2 个答案:

答案 0 :(得分:0)

Ruby Cucumber魔法取决于World object。要使您的RubyHelper文件可用于步骤定义,您需要:

  1. 将辅助方法包装在模块中
  2. 告诉Cucumber将模块包含在每个场景的每个World对象中
  3. 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)
    

答案 1 :(得分:0)

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