Некоторая часть 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 для этого.