2009-11-13 3 views
5

Scrivo selenio. Perché una pagina html includa una tabella, non posso usare "css = table tr: nth-child (2) td: nth-child (3) a" per individuare il link nella tabella. L'IDE selenio mi dà il "[locator errore] non trovato".Selenio: impossibile individuare il collegamento nella tabella

Ma utilizzare "css = table tr: nth-child (2)", può individuare la riga. Quindi mi sbaglio per il css locator, penso che aggiungere "td: nth-child (3) a" dovrebbe funzionare per il collegamento in td, perché no?

Edit: io sto usando Firefox 3.0.15

risposta

8

Data l'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> 

È possibile utilizzare il seguente localizzatore per il collegamento nella seconda colonna della seconda fila:

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

Aggiornamento:

Dopo un un po 'di ricerca, sembra che il tuo localizzatore originale debba funzionare, ma non a causa di un bug nella libreria cssQuery utilizzata da Selenium (http://jira.openqa.org/browse/SEL-698). Il mio suggerimento sopra funziona, ma in realtà è solo una soluzione finché il bug non viene risolto. Purtroppo, considerando il cssQuery non è stato aggiornato per un po 'di tempo non sono sicuro di quanto presto questo sarà risolto.

+0

Funziona, grazie. – zhongshu

0

Un problema simile è ancora in giro in Selenio IDE 2.1.0

sto testando un gruppo di siti web per controllare se un URL specifico è stato modificato.

Il link che dovrei verificare la presenza è in una tabella, nel 25 o giù di lì tr dall'alto ...

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

Ho usato sia

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

e

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

In alcuni casi, il primo troverà un risultato, ma il secondo no. La maggior parte delle volte nessuno troverà il collegamento.