我有Selenium / Java背景,第一次使用Ruby / Capybara / Site Prism。
我想创建一个对象,然后在不使用.load方法的情况下与页面上的元素进行交互,但是在单击链接后转到将构成我的对象的页面。
我有一个这样的对象:
require 'site_prism'
require 'capybara'
class OpportunityObject < SitePrism::Page
element :event_date, "td#00NC0000005hghU_ilecell"
end
我的代码如下所示:
require 'salesforce/objects/Opportunity'
require 'salesforce/salesforce_helper'
describe 'Create Opportunity', type: :feature do
before :all do
set_env
end
it 'Create Opportunity' do
login_to_salesforce
sleep 1
go_to_opportunities_page
sleep 1
#get_random_opportunity.click
@opportunity = OpportunityObject.new
puts @opportunity.event_date.text
end
end
我得到的错误是:
The given selector #00NC0000005hghU_ilecell is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: An invalid or illegal selector was specified
没有像我期望的那样发生OpportunityObject的分配。我希望@opportunity是一个OpportunityObject,可访问的成员是event_date。 @opportunity似乎是一个OpportunityObject,但没有定义任何成员。
我不想加载页面,因为我可能不知道当时的URL是什么。但是,我知道我会在页面上,并希望使用特定的页面元素定义对象。