2009-11-13 7 views
5

Piszę skrypt Selenium. Dla strony html zawierają tabelę, nie mogę użyć "css = table tr: nth-child (2) td: nth-child (3) a", aby znaleźć link w tabeli. Selenium IDE daje mi "nie znaleziono [błędu] lokalizatora".Selen: nie można zlokalizować linku w tabeli

Ale użyj "css = table tr: nth-child (2)", może zlokalizować do rzędu. Więc jestem błędem dla lokalizatora css, myślę, że dodanie "td: nth-child (3) a" powinno działać dla łącza w td, dlaczego nie?

Edycja: używam firefox 3.0.15

Odpowiedz

8

Wobec HTML:

<html> 
    <body> 
    <table> 
     <tr><td>Hello</td><td>World</td></tr> 
     <tr><td>I'm</td><td><a href="http://www.example.com/">Batman</a></td></tr> 
    </table> 
    </body> 
</html> 

Można użyć następującego lokalizator dla łącza w 2. kolumnie 2. rzędzie:

css=tr:nth-child(2) > td:nth-child(2) > a 

Aktualizacja:

Po trochę badań, wygląda na to, że Twój oryginalny lokalizator powinien pracować, ale nie z powodu błędu w bibliotece cssQuery używanej przez Selenium (http://jira.openqa.org/browse/SEL-698). Moja sugestia powyżej działa, ale jest to naprawdę tylko obejście, dopóki bug nie zostanie naprawiony. Niestety, biorąc pod uwagę, że cssQuery nie był od jakiegoś czasu aktualizowany, nie jestem pewien, jak szybko zostanie to rozwiązane.

+0

Działa, dzięki. – zhongshu

0

Podobny problem jest nadal około w selen IDE 2.1.0

ja testuje grupę stron internetowych w celu sprawdzenia, czy dany URL został zmieniony.

Link Mam sprawdzić w tabeli, w 25 lub tak tr od góry ...

<tr> 
<td> 
<div align="center"> 
<font color="#FFFFFF"> 
<a target="_blank" href="http://[The link I need to test] ... 

Używałem zarówno

assertElementPresent //*[starts-with(@href,'The Link')] 

i

assertElementPresent //*[contains(@*,'The Link')] 

W niektórych przypadkach pierwszy znajdzie wynik, ale drugi nie. W większości przypadków żaden z nich nie znajdzie linku.