Domanda

Sto cercando di colpire un collegamento in una table-row che contiene più collegamenti. Questo modello è utilizzato in tutto il tavolo.

Questo funziona:

browser.wait_for(:element => "css=tr:nth-child(1) li:nth-child(2) > a")

Questo non lo fa:

browser.click "css=tr:nth-child(1) li:nth-child(2) > a"

Tutte le idee perché questo potrebbe essere? Sto utilizzando il rubygem selenio-client.

È stato utile?

Soluzione

Ho il sospetto che questo è dovuto ad un bug in cssQuery, che selenio usa attualmente per individuare elementi di CSS. I dettagli del problema e di una patch possono essere trovati nei commenti del seguente problema: http: // jira.openqa.org/browse/SEL-698

La speranza che aiuta - credo Selenio 2 sarà utilizzando una libreria differente per localizzatori CSS - possibilmente di JQuery Sizzle ( http: // sizzlejs.com/ ), che dovrebbe risolvere il problema.

Dave.

Altri suggerimenti

Per evitare problemi di CSS dolorosi come questo, ho installato jQuery come estensione utente. Dà la possibilità di definire una stringa localizzatore simile a CSS ( "jquery = td.dt-col-stato div.dt-liner: contiene ( 'Completo')"), che è molto più potente. Posso espandere su come ho fatto per Java RC, se vuoi.

Questo è un bug di selenio 1 Vorrei provare a scrivere l'intero percorso nel percorso CSS e vedere se questo aiuta.

ex se si utilizza il seguente codice HTML è possibile utilizzare il seguente CSS localizzatore
    

    <table>
        <tr>
            <td>
                <li>
                    <a href="/yourlink" >
</li> </td> </tr> </table>

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

Se questo non funziona si può sempre usare XPath. E 'altrettanto espressiva come localizzatori CSS, ma tende ad avere un minor numero di difetti. L'unica cosa che dovete tenere a mente quando si usa XPaths è che sono generalmente più lento di localizzatori css.

"xpath=//tr/td//li[2]/a" 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top