3

こんにちは、私はwatir watir-classicをgemインストールしたので、私のスクリプトはもうspan要素を読み取っていません。この問題を解決するのを手伝ってくれませんか

ここに私の例

ソース

Rented 
<SPAN class="displayData" style="padding-left:2px; width: 15;"><span name="tab4RateInfoForm.vehicleGroup"/>F</span></SPAN>&nbsp;

私のコード

carGroup=browser.span(:name => 'tab4RateInfoForm.vehicleGroup').text

エラーメッセージ

C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:79:in `rescue in match?': name is an unknown way of finding a <span> element (tab4RateInfoForm.vehicleGroup) (Watir::Exception::MissingWayOfFindingObjectException)
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:76:in `match?'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:62:in `block in match_with_specifiers?'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:59:in `each'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:59:in `all?'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:59:in `match_with_specifiers?'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:22:in `block (2 levels) in each'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:140:in `block in each_element'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:139:in `each'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:139:in `each_element'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:21:in `block in each'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:20:in `each'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:20:in `each'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/locator.rb:150:in `locate'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/element.rb:33:in `locate'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/element.rb:63:in `assert_exists'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/element.rb:132:in `text'
4

2 に答える 2

4

解決策1:cssロケーターを使用する

css-locator(またはxpath)を使用する必要があります。

carGroup = browser.span(:css, 'span[name="tab4RateInfoForm.vehicleGroup"]').text

解決策2:モンキーパッチ

または、name属性を使用するレガシースクリプトが多数ある場合は、Watirにモンキーパッチを適用して、すべての要素(または必要に応じて特定の要素)にnameメソッドを適用できます。

watirが必要な場所に以下を追加します。

Watir::IE.new(true)
module Watir
  class Element
    def name
      return self.attribute_value('name')
    end
  end
end

これで、元の方法が機能するはずです。

于 2013-01-02T15:36:21.003 に答える
0

属性spanを介して要素にアクセスできなくなったようです。name

elementこれを試してください(代わりにgenericを使用してくださいspan):

carGroup=browser.element(:name => 'tab4RateInfoForm.vehicleGroup').text
于 2013-01-02T13:29:35.330 に答える