How do I select a radio button when both id and name are identical?:
Ja
Nej
Normally I use
choose.(‘A radio button’), but that doesn’t seem to work with values.
Any ideas?
How do I select a radio button when both id and name are identical?:
Ja
Nej
Normally I use
choose.(‘A radio button’), but that doesn’t seem to work with values.
Any ideas?
Short answer is the IDs should be unique.
On 16 December 2010 13:52, Sofie W. [email protected] wrote:
How do I select a radio button when both id and name are identical?:
Ja
Nej
I believe that is not valid html unless id values are unique.
Colin
I have not written that code… It’s on a webpage that I’m trying to
screen scrape…
Does it mean that I can’t change selected button with Capybara?
On 16 December 2010 14:06, Sofie W. [email protected] wrote:
I have not written that code… It’s on a webpage that I’m trying to
screen scrape…
Please quote previous message when replying, otherwise it is difficult
to follow the thread. Thanks.
I suggest you contact the site owner and tell him/her you are having
difficulty scraping his page and ask him to correct the html to make
your life easier.
Colin
Colin L. wrote in post #968844:
On 16 December 2010 13:52, Sofie W. [email protected] wrote:
How do I select a radio button when both id and name are identical?:
Ja
NejI believe that is not valid html unless id values are unique.
You are correct. But you could probably still use CSS or XPath
selectors to get the item you want.
Colin
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
<input id="current_client_id_3" name="current_client_id"
value=“3” type=“radio”>
TestClientA
When I choose “TestClientA”
cannot choose field, no radio button with id, name, or label
‘TestClientA’ found (Capybara::ElementNotFound)
./features/step_definitions/web_steps.rb:90
./features/step_definitions/web_steps.rb:14:inwith_scope' ./features/step_definitions/web_steps.rb:89:in
/^(?:|I )choose
“([^”])"(?: within “([^”])")?$/’
features\login.feature:17:in `When I choose “TestClientA”’
TestClientA is not an id, name nor label, that’s why capybara can’t find
it.
In your case, all radio buttons have unique ids (which is the way it
should be). Choose the button based on the id, in your case:
“current_client_id_3” (for TestClientA).
On Dec 17, 2010, at 6:19 PM, pingu wrote:
<label> TestClientA </label> </li>
Do what the other poster suggested or change your HTML to this…
TestClientA
Then your ‘When I choose’ should work.
I am having a similar issue.
HTML:
<input id="current_client_id_4" name="current_client_id"
value=“4” type=“radio”>
Test client 2
Feature:
Scenario: home page
Given…
…
When I choose “TestClientA”
…
Then…
Step: I am using auto generated - choose in web_steps.rb
When /^(?:|I )choose “([^”])"(?: within “([^”])")?$/ do |field,
selector|
with_scope(selector) do
choose(field)
end
end
This is not working either in default capybara driver or selenium
driver.
(: failed steps (:
cannot choose field, no radio button with id, name, or label
‘TestClientA’ found (Capybara::ElementNotFound)
./features/step_definitions/web_steps.rb:90
./features/step_definitions/web_steps.rb:14:in with_scope' ./features/step_definitions/web_steps.rb:89:in
/^(?:|I )choose
“([^”])"(?: within “([^”])")?$/’
features\login.feature:17:in `When I choose “TestClientA”’
I tried xpath, but that is working only with selenium driver, not with
capybara default driver. Any ideas?
Sofie/Philip - Thanks for your suggestions. I tried both the
approaches, but no luck.
HTML:
Corresponding haml(just in case)
%li
= radio_button_tag “current_client_id”, client.id
%label{:for => client.client_name}=client.client_name
a) When I choose “current_client_id_3”
Error: cannot choose field, no radio button with id, name, or label
‘current_client_id_3’ found (Capybara::ElementNotFound)
./features/step_definitions/web_steps.rb:90
./features/step_definitions/web_steps.rb:14:in with_scope' ./features/step_definitions/web_steps.rb:89:in
/^(?:|I )choose
“([^”])"(?: within “([^”])")?$/’
features\login.feature:16:in `And I choose “current_client_id_3”’
Got the same error with unmodified html code as well
b) When I choose “TestClientA”
Error:cannot choose field, no radio button with id, name, or label
‘TestClientA’ found (Capybara::ElementNotFound)
./features/step_definitions/web_steps.rb:90
./features/step_definitions/web_steps.rb:14:in with_scope' ./features/step_definitions/web_steps.rb:89:in
/^(?:|I )choose
“([^”])"(?: within “([^”])")?$/’
features\login.feature:16:in `When I choose “TestClientA”’
Rails: 2.3.5, Ruby:ruby 1.8.7
On Dec 18, 2010, at 5:11 PM, pingu wrote:
HTML:
TestClientA
Here’s one thing to fix. The ‘for’ attribute of a label must equal the
ID of the form element (if it exists) or the name attribute of the
form element if the ID does not exist. So in your example, the code
should be:
Walter
I found out what the problem is - My Ignorance about Capybara.
I thought capybara would use the following port mentioned in my env.rb
(as selenium was using and tests were running fine).
Capybara.app_host = “http://localhost:3000”
I did n’t know Capybara starts the app in a new server instance on a
different port. Also it uses a test database instead of the app
database.
Database was the problem in my case. It didn’t have enough data to
show the page html and so naturally capybara was n’t able to find the
selector.
Sorry for misleading you guys earlier(This is my first week on ruby
stack). Thanks again Sofie & Philip.
Thanks Walter
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs