Robot Framework - Selenium2library - Проверьте фавикон страницы

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

я пытался

Page Should Contain Image    /bin/icons/1.ico

HTML, который мы используем:

<link rel="shortcut icon" type="image/x-icon" href="/bin/icons/1.ico"/>

Ключевое слово не сработало. Есть ли что-то еще, что я должен использовать? или селен не поддерживает такой тест?


person Goralight    schedule 01.12.2016    source источник
comment
пытались ли вы получить значение атрибута href с помощью Получить атрибут элемента ?   -  person Bryan Oakley    schedule 01.12.2016
comment
Как я могу получить локатор того, что не отображается на странице? Он отображается на вкладке браузера.   -  person Goralight    schedule 01.12.2016
comment
Я не знаю. Я просто спрашиваю, пытались ли вы это выяснить.   -  person Bryan Oakley    schedule 01.12.2016
comment
Попробую разобраться сейчас - хорошее предложение   -  person Goralight    schedule 01.12.2016
comment
Итак, подумав об этом и посмотрев документацию, я использовал это: ${test} = get element attribute tag=link@href Однако фавикон не является первой ссылкой. Это второе. Есть ли способ выбрать 2-й? похоже на xpath?   -  person Goralight    schedule 01.12.2016


Ответы (2)


В соответствии с действующими стандартами правильный способ установки значка — через ссылку тег, имеющий атрибут rel="icon", хотя некоторые сайты все еще используют rel="shortcut icon" (подробнее в ссылке на Википедию выше). Этот xpath охватывает оба:

${loc}=    xpath=//link[@rel="link" or @rel="shortcut icon"]

Чтобы получить его значение, используйте обычный подход robotframework:

${favicon}=    Get Element Attribute     ${loc}@href
person Todor Minakov    schedule 26.03.2017
comment
Я задал этот вопрос и ответил на него задолго до того, как действительно понял Xpath, и я согласен с тем, что мой ответ был очень... неинтуитивным;). Я думаю, что я пытался сказать, найти ссылку, содержащую фавикон, и сравнить ее с ожидаемой ссылкой. Ваш ответ понятнее и понятнее моего. - person Goralight; 27.03.2017
comment
Рад помочь @Goralight. Кстати, в вашем решении я бы еще предложил не использовать должно быть равным, а скорее - должно содержать и искать путь после имени хоста - /bin/icons/1.ico; таким образом, случай будет применим к другим средам/развертываниям. - person Todor Minakov; 27.03.2017

Догадаться. Я в основном беру href рассматриваемого тега ссылки, а затем сравниваю их, используя ключевое слово «должны быть равны как строки». Я бы решил это раньше, но тег ссылки на значок не был первым тегом ссылки. Ниже приведены строки, которые я использовал:

${Favicon1} =   Get Element Attribute    //link[2]@href
Should Be Equal As Strings    ${Favicon1}    http://localhost:8080/bin/icons/1.ico

Большое спасибо Брайану Окли за то, что подтолкнул меня в правильном направлении.

person Goralight    schedule 02.12.2016
comment
Не делайте этого по двум причинам. Во-первых, вам, вероятно, нужен второй элемент ссылки, но это может быть легко изменено в будущей версии или сборке. Во-вторых, в xpath индексация имеет более высокий приоритет, чем отношение, поэтому локатор на самом деле считывает любую ссылку, которая является вторым дочерним элементом своего родителя (поверьте мне, хотя поначалу это неинтуитивно, это действительно так :). - person Todor Minakov; 26.03.2017