2012-10-12 275 views
9

Tengo una aplicación que no asigna identificadores únicos a las celdas de la tabla. Dado un texto único en la columna 1, un enlace de administración en la columna 2 y un enlace de eliminación en la columna 3, ¿cómo le digo a capibara que haga clic en el enlace de administración en la misma fila que contiene el texto 'Foo'?Rails/Capybara: Cómo hacer clic en un enlace en una fila de la tabla que también contiene texto único

Foo manage delete 
Bar manage delete 

veo cómo utilizar find('tr', text: "Foo") cuando se utiliza con una cláusula .should. Y veo cómo hacer clic en un enlace que contiene el texto 'administrar'. Pero no veo cómo combinarlos para encontrar una fila, y dentro de esa fila, haga clic en un enlace.

Respuesta

14

He probado esto y debería funcionar:

find(:xpath, "//tr[td[contains(.,'Foo')]]/td/a", :text => 'manage').click 

Lo que esto dice es, buscar la fila con una columna que contiene el texto 'Foo', y hacer clic en el enlace en una columna en el misma fila con un texto 'administrar'.

Si no le importa donde aparece 'Foo' (es decir, podría estar en cualquier lugar en la fila), entonces usted puede hacer esto:

find(:xpath, "//tr[contains(.,'Foo')]/td/a", :text => 'manage').click 
+0

Actualizado mi respuesta . Originalmente, utilicé el mismo formato de comillas simples para xpath y cadenas dentro de xpath, lo que no hubiera funcionado. –

+0

increíble gracias ... – jpwynn

7

Otro ejemplo:

When(/^I delete the Book with the Title "(.*?)"$/) do |title| 
    find('tr', text: title).click_link("Delete") 
end 
Cuestiones relacionadas