Selenium CSS Locator специальный символ @ - PullRequest
2 голосов
/ 08 декабря 2011

Я просто хотел узнать, что означает специальный символ @ в локаторе селена CSS.

Например, для HTML

<select id="ms1" multiple="multiple">
    <option id="oa">
     OptionA
    </option>
    <option id="ob" selected="selected">
     OptionB
    </option>
    <option id="oc">
     OptionD
    </option>
</select>

я получаю следующие результаты наличияразличные CSS локаторы -

# s1 is selenium object
>>> s1.is_element_present('css=select[multiple="multiple"][id="ms1"]')
False
>>> s1.is_element_present('css=select[@multiple="multiple"][id="ms1"]')
True
>>> s1.is_element_present('css=select[@multiple="multiple"][@id="ms1"]')
False
>>> s1.is_element_present('css=select[multiple="multiple"][@id="ms1"]')
False
>>> 

Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 09 декабря 2011

Символ @ не имеет специального назначения в селекторе CSS Selenium. Это имеет особое значение в команде Selenium getAttribute, но это не то, что вы используете здесь.

Правильный способ написать ваш поиск:

s1.is_element_present('css=select#ms1[multiple="multiple"]')

Однако, поскольку атрибуты id должны быть уникальными, следующее должно работать точно так же и, вероятно, быстрее:

s1.is_element_present('css=#ms1')

Или даже быстрее, потому что анализ CSS не требуется:

s1.is_element_present('id=ms1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...