背景:我是一名自动化菜鸟,我正在尝试使用红宝石和硒进行一些测试。我对我正在做的事情有所了解,但我仍然是绿色的。
问题:当我尝试在一个应该从页面部分继承该方法的对象上调用方法时,我得到了一个“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方法的测试的期望行上得到了错误。
我觉得很愚蠢,但我希望有人能指出我正确的方向。
答案 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