Как использовать несколько локаторов CSS в качестве локатора селена?

Я пытаюсь перейти по ссылке в строке таблицы, содержащей несколько ссылок. Этот шаблон используется во всей таблице.

Это работает:

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

Это не:

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

Любые идеи, почему это может быть? Я использую selenium-client rubygem.


person Rodreegez    schedule 18.02.2010    source источник


Ответы (3)


Я подозреваю, что это связано с ошибкой в ​​cssQuery, которую Selenium в настоящее время использует для поиска элементов с помощью CSS. Подробности проблемы и исправления можно найти в комментариях к следующей проблеме: http://jira.openqa.org/browse/SEL-698

Надеюсь, это поможет — я считаю, что Selenium 2 будет использовать другую библиотеку для локаторов CSS — возможно, JQuery Sizzle (http://sizzlejs.com/), что должно решить эту проблему.

Дэйв.

person Dave Hunt    schedule 19.02.2010

Чтобы избежать таких болезненных проблем с CSS, я установил jQuery в качестве пользовательского расширения. Это дает возможность определить строку локатора, аналогичную CSS ("jquery=td.dt-col-status div.dt-liner:contains('Complete')"), которая является гораздо более мощной. Если хотите, я могу рассказать, как я это сделал для Java RC.

person dhackner    schedule 24.02.2010

Это ошибка в селене 1. Я бы попробовал написать весь путь в вашем пути css и посмотреть, поможет ли это.

ex if you are using the following html you can use the following css locator

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

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

Если это не сработает, вы всегда можете использовать xpath. Он такой же выразительный, как локаторы CSS, но имеет меньше сбоев. Единственное, что вы должны иметь в виду при использовании xpaths, это то, что они, как правило, медленнее, чем локаторы css.

"xpath=//tr/td//li[2]/a" 
person EsotericNonsense    schedule 25.03.2013