CSS локатор для соответствующего xpath для селена - PullRequest
0 голосов
/ 15 апреля 2011

Некоторая часть HTML веб-страницы, которую я тестирую, выглядит следующим образом

<div id="twoWideCallouts">

<div class="callout">
    <a target="_blank" href="http://facebook.com">Facebook</a>
</div>

<div class="callout last">
    <a target="_blank" href="http://youtube.com">Youtube</a>
</div>

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

Используя Xpath, я написал следующую команду

//i is iterator
selenium.getAttribute("//div[contains(@class, 'callout')]["+i+"]/a/@href")

Однако, это очень медленно и для некоторых ссылок не работает. Прочитав много ответов и комментариев на этом сайте, я узнал, что CSS-лоакторы быстрее и чище поддерживать, поэтому я написал это снова как

css = div:contains(callout)

Во-первых, я не могу связаться с тегом привязки.

Во-вторых, эта страница может иметь любое число div, где id = callout. Используя xpathcount, я могу получить счетчик, и я буду повторять этот счетчик и выполнять проверку href. Как сделать что-то подобное с помощью локатора CSS?

Любая помощь будет оценена.

EDIT

Я могу нажать на ссылку, используя локатор css=div.callout a, но когда я пытаюсь прочитать значение href, используя String str = "css=div.callout a[href]"; selenium.getAttribute(str);. Я получаю сообщение об ошибке - элемент не найден. Описание консоли приведено ниже.

19:12:33.968 INFO - Command request: getAttribute[css=div.callout a[href], ] on session 
19:12:33.993 INFO - Got result: ERROR: Element css=div.callout a[href not found on session 

Я пытался получить атрибут href, используя xpath, как это

"xpath=(//div[contains(@class, 'callout')])["+1+"]/a/@href" and it worked fine.

Скажите, пожалуйста, какой должен быть соответствующий локатор CSS для этого.

Ответы [ 3 ]

0 голосов
/ 16 апреля 2011

Это должно быть -

css = div: содержит (выноска)

Вы заметили ":" вместо "."Вы использовали?

Для CSSCount это могло бы помочь -

http://www.eviltester.com/index.php/2010/03/13/a-simple-getcsscount-helper-method-for-use-with-selenium-rc/

#

В другой заметке, вы видели предложение нового сайта селена в области 51- http://area51.stackexchange.com/proposals/4693/selenium.

#
0 голосов
/ 18 апреля 2011

Для чтения sttribute я использовал css=div.callout a@href, и это сработало. Проблема была в использовании квадратных скобок вокруг имени атрибута.

0 голосов
/ 16 апреля 2011

Для первой части вашего вопроса, прикрепите свой идентификатор к гиперссылке:

css=a[href=http://youtube.com]

Для достижения количества элементов в DOM, основанного на селекторах CSS, вот отличная статья 1005 *.

...