hiya, i want the selector that would return a <tr> of a table if any td contains some text, so i can use it in click_link_within e.g. When I click the "show" link within the row containing "user at example.com" When /^I click the "(.+)" link within the row containing "(.+)"$/ do | link, text| selector = ?? click_link_within selector, link end ----------- and lets say the response contains ... <div class="table-container"> <table> <tbody> <tr>...</tr> <tr> <td><a href="/posts/14">show</a></td> <td>foo</td> <td>bar</td> <td>user at example.com</td> <td>baz</td> </tr> <tr>...</tr> </tbody> </table> </div> ...
On Sat, Jan 24, 2009 at 12:05 AM, Jonathan Linowes <jonathan at parkerhill.com> wrote:> hiya, > > i want the selector that would return a <tr> of a table if any td contains > some text, so i can use it in click_link_within > > e.g. When I click the "show" link within the row containing > "user at example.com" > > > When /^I click the "(.+)" link within the row containing "(.+)"$/ do |link, > text| > selector = ?? > click_link_within selector, link > endYou can use an XPath selector to find the parent. Try: selector = "//table//tr//td[contains(.,''user at example.com'')]//.."> > > ----------- > and lets say the response contains > > ... > <div class="table-container"> > <table> > <tbody> > <tr>...</tr> > <tr> > <td><a href="/posts/14">show</a></td> > <td>foo</td> > <td>bar</td> > <td>user at example.com</td> > <td>baz</td> > </tr> > <tr>...</tr> > </tbody> > </table> > </div> > ... >-- Zach Dennis http://www.continuousthinking.com http://www.mutuallyhuman.com
On Jan 25, 2009, at 11:58 AM, Zach Dennis wrote:> On Sat, Jan 24, 2009 at 12:05 AM, Jonathan Linowes > <jonathan at parkerhill.com> wrote: >> hiya, >> >> i want the selector that would return a <tr> of a table if any td >> contains >> some text, so i can use it in click_link_within >> >> e.g. When I click the "show" link within the row containing >> "user at example.com" >> >> >> When /^I click the "(.+)" link within the row containing "(.+)"$/ >> do |link, >> text| >> selector = ?? >> click_link_within selector, link >> end > > You can use an XPath selector to find the parent. Try: > > selector = "//table//tr//td[contains(.,''user at example.com'')]//.."hi Zach, that works as a selector when I do doc = Nokogiri::HTML.parse( response.body ) doc.xpath(selector) returns the correct dom elements but when used with click_link_within I get the error Nokogiri::CSS::SyntaxError Exception: unexpected ''//'' after ''''
On Fri, Jan 30, 2009 at 9:45 PM, Jonathan Linowes <jonathan at parkerhill.com> wrote:> > On Jan 25, 2009, at 11:58 AM, Zach Dennis wrote: > >> On Sat, Jan 24, 2009 at 12:05 AM, Jonathan Linowes >> <jonathan at parkerhill.com> wrote: >>> >>> hiya, >>> >>> i want the selector that would return a <tr> of a table if any td >>> contains >>> some text, so i can use it in click_link_within >>> >>> e.g. When I click the "show" link within the row containing >>> "user at example.com" >>> >>> >>> When /^I click the "(.+)" link within the row containing "(.+)"$/ do >>> |link, >>> text| >>> selector = ?? >>> click_link_within selector, link >>> end >> >> You can use an XPath selector to find the parent. Try: >> >> selector = "//table//tr//td[contains(.,''user at example.com'')]//.." > > hi Zach, > > that works as a selector when I do > doc = Nokogiri::HTML.parse( response.body ) > doc.xpath(selector) > returns the correct dom elements > > but when used with click_link_within I get the error > > Nokogiri::CSS::SyntaxError Exception: unexpected ''//'' after '''' >Sorry for the late reply, but this is a bug in webrat not a nokogiri issue. I''ve created a ticket for it at lighthouse: http://webrat.lighthouseapp.com/projects/10503-webrat/tickets/153-within-should-support-xpath -- Zach Dennis http://www.continuousthinking.com http://www.mutuallyhuman.com
> Sorry for the late reply, but this is a bug in webrat not a nokogiri > issue. I''ve created a ticket for it at lighthouse: > > http://webrat.lighthouseapp.com/projects/10503-webrat/tickets/153-within-should-support-xpathI wrote an ugly duckpunch that fixes the error for now. I have submitted it as a comment on the ticket -- Posted via http://www.ruby-forum.com/.