Pergunta

Estou tentando acertar um link em uma linha de tabela que contém vários links. Esse padrão é usado em toda a tabela.

Isso funciona:

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

Isso não é:

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

Alguma ideia de por que isso pode ser? Estou usando o rubygem de selênio-cliente.

Foi útil?

Solução

Suspeito que isso se deva a um bug no CSSQUERY, que o selênio atualmente usa para localizar elementos pelo CSS. Detalhes da questão e um patch podem ser encontrados nos comentários da questão a seguir: http://jira.openqa.org/browse/sel-698

Espero que ajude - acredito que o selênio 2 use uma biblioteca diferente para os localizadores CSS - possivelmente o chiado de jQuery (http://sizzlejs.com/), que deve resolver esse problema.

Dave.

Outras dicas

Para evitar problemas dolorosos de CSS como esse, instalei o JQuery como uma extensão do usuário. Ele fornece a capacidade de definir uma sequência de localizador semelhante ao CSS ("jQuery = td.dt-col-status div.dt-liner: contém ('complete')") que é muito mais poderoso. Posso expandir como fiz isso pelo Java RC, se você quiser.

Este é um bug no selênio 1, eu tentaria escrever todo o caminho no caminho do seu CSS e ver se isso ajuda.

ex Se você estiver usando o seguinte HTML, você pode usar o seguinte localizador CSS

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

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

Se isso não funcionar, você sempre pode usar o XPath. É tão expressivo quanto os localizadores CSS, mas tende a ter menos falhas. A única coisa que você precisa ter em mente ao usar o XPaths é que eles geralmente são mais lentos que os localizadores CSS.

"xpath=//tr/td//li[2]/a" 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top