Capybara/Poltergeist:带冒号的CSS ID引发了Capybara :: Poltergeist :: InvalidSelector

Tra*_*ash 5 css capybara phantomjs poltergeist

我有一个名称中带冒号的CSS选择器,这显然是个问题.

例:

selector = 'input#billing:street1'
find(selector)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

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

有没有办法按原样使用选择器?我知道我可以这样做:

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

但我不想因为各种原因这样做.

我使用Cucumber,Capybara,Poltergeist/PhantomJS

Dry*_*ong 8

根据我对CSS和Javascript的经验,这是一个有根据的猜测,但你可以尝试这样的事情:

selector = 'input#billing\:street1'
find(selector)
Run Code Online (Sandbox Code Playgroud)

注意冒号前面的反斜杠,这会转义CSS中的字符.但是对于Javascript,它略有不同.你将需要两个斜杠来逃避角色.像这样:

selector = 'input#billing\\:street1'
find(selector)
Run Code Online (Sandbox Code Playgroud)

我不确定哪一个会做伎俩(如果有的话),因为我对Cucumber,Capybara和Poltergeist/PhantomJS没有经验,但根据你的代码看起来好像你想先尝试双斜杠\\选项.