5

名前にコロンを含む CSS セレクターがありますが、これは明らかに問題です。

例:

selector = 'input#billing:street1'
find(selector)

次のエラー メッセージが表示されます。

The browser raised a syntax error while trying to evaluate the selector "input#billing:region_id" (Capybara::Poltergeist::InvalidSelector)

セレクターをそのまま使用する方法はありますか?私はそのようなことができることを知っています:

selector = 'billing:street1'
find(:xpath, ".//input[@id='#{selector}']")

しかし、私はさまざまな理由でそれをしたくありません。

Cucumber、Capybara、Poltergeist/PhantomJS を使用しています

4

1 に答える 1

7

これは、CSS と Javascript に関する私の経験に基づいた経験に基づいた推測ですが、次のようなことを試すことができます。

selector = 'input#billing\:street1'
find(selector)

コロンの前のバックスラッシュに注意してください。これは、CSS の文字をエスケープします。ただし、Javascript の場合は少し異なります。文字をエスケープするには、2 つのスラッシュが必要です。そのようです:

selector = 'input#billing\\:street1'
find(selector)

Cucumber、Capybara、および Poltergeist/PhantomJS の経験がまったくないため、どちらがうまくいくかはわかりませんが、コードに基づいて、\\最初に二重スラッシュ オプションを試してみたいと思われます。 .

于 2013-07-31T16:23:45.787 に答える