我有 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 是什么。但是,我确实知道我将在页面上并希望使用特定页面元素定义对象。