Selenium自动化:Nomethoderror undefined方法'我的方法'为nil:nilclass

时间:2017-10-19 17:26:39

标签: ruby selenium-webdriver rspec ui-automation

背景:我是一名自动化菜鸟,我正在尝试使用红宝石和硒进行一些测试。我对我正在做的事情有所了解,但我仍然是绿色的。

问题:当我尝试在一个应该从页面部分继承该方法的对象上调用方法时,我得到了一个“nil:nilclass的nomethoderror undefined方法”。

疑难解答和研究:我为nil:nilclass问题搜索了类似的问题,找不到任何与我想要做的事情相符的事情(或者它没有出现这种情况到我的诺布眼睛)。我怀疑我没有正确地实例化我试图调用该方法的页面部分,但我不确定如何表达这一点以使事情向前发展。

其他东西:我知道还有其他库可以帮助我更好地完成元素和部分(比如siteprism等),但我试图用selenium和RSpec来做这件事作为我训练中的练习。

以下是页面部分的代码

require_relative 'abstract_page'

class PageTitleSection < AbstractPage

   def findPageTitle
        @driver.find_element(:class, 'subheader')
   end

 end

以下是Page

的代码
require_relative 'abstract_page'
require_relative 'page_title_section'


class TagsPage < AbstractPage
  attr_reader :page_title_section
  @page_title_section

  def self.navigateToTags(driver)
    driver.get('https://stackoverflow.com/tags')
    return TagsPage.new(driver)
    @page_title_section = PageTitleSection.new(driver)
  end
end

这是测试:     要求'rspec'     要求'selenium-webdriver'

require_relative 'spec_helper.rb'
require_relative '../pages/tags_page'
require_relative '../pages/page_title_section'

describe 'Basic navigation and confirmation that page title is visible' do

   it 'should navigate to the tags page and find the title' do
     tags_page = TagsPage.navigateToTags(@driver)
     expect(tags_page.page_title_section.findPageTitle).to eq('Tags')
   end
end

我在findPageTitle方法的测试的期望行上得到了错误。

我觉得很愚蠢,但我希望有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

tags_page.page_title_section是零。 请注意,在navigateToTags方法中,确实从未分配过它。 return高于它。

def self.navigateToTags(driver)
  driver.get('https://stackoverflow.com/tags')
  return TagsPage.new(driver)
  @page_title_section = PageTitleSection.new(driver) # <- unreachable code
end