【发布时间】:2017-10-19 17:26:39
【问题描述】:
背景:我是一个自动化新手,我正在尝试使用 ruby 和 selenium 启动和运行一些测试。我对自己在做什么有了一些了解,但我仍然很年轻。
问题:当我尝试调用应该从页面部分继承该方法的对象上的方法时,我收到“nomethoderror undefined method for nil:nilclass”。
疑难解答和研究:我搜索了关于 nil:nilclass 问题的类似问题,但找不到任何与我正在尝试做的事情真正对应的内容(或者看起来不是那样)在我的菜鸟眼里)。我怀疑我没有正确实例化我试图从中调用该方法的页面部分,但我不确定如何表达这一点以使事情向前发展。
其他东西:我知道还有其他库可以帮助我更好地处理元素和部分(如 siteprism 等),但我正在尝试仅使用 selenium 和 RSpec作为我训练中的一个练习。
这是页面部分的代码
require_relative 'abstract_page'
class PageTitleSection < AbstractPage
def findPageTitle
@driver.find_element(:class, 'subheader')
end
end
这是页面的代码
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 方法的测试的期望行上收到错误。
我觉得自己很愚蠢,但我希望有人能指出我正确的方向。
【问题讨论】:
-
你没有具体说明你得到了什么 NoMethodError (它来自哪一行代码)但我注意到
TagsPage#navigateToTags的第三行是无法访问的,因为你无条件地返回第 2 行。我认为这就是问题所在 - 因为@page_title_section永远不会被设置,那么在你的测试中tags_page.page_title_section将为零 -
嘿抱歉,我在测试的 expect() 部分中的 findPageTitle 上遇到了 NoMethodError
标签: ruby selenium-webdriver rspec ui-automation