1

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

4

0 回答 0