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/.