Как найти неработающие ссылки, используя Robot Framework - PullRequest
0 голосов
/ 22 октября 2019

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

Get All Link Tests
    [Tags]    Regression
    [Setup]    Log To Console    Test for total links present on landing page started...
    ${base_url}=    Get Base Url
    open browser  about:blank  ${browser}
    go to  ${base_url}

    ${ALL_LINKS_COUNT}  get element count  xpath://a
    log to console  ${ALL_LINKS_COUNT}

    @{LINK_ITEMS}  create list
    : FOR  ${index}  IN RANGE  1  ${ALL_LINKS_COUNT}+1
    \  log  ${index}
    \  ${link_text}  get text  xpath:(//a)[${index}]
    \  ${href}  Get Element Attribute  xpath:(//a)[${index}]  href
    \  log  ${link_text}
    \  log to console  ("The link text is "${link_text}" & href is "${href}" ${INDEX})
    \  ${link_length}  Get Length  ${link_text}
    \  Run Keyword If  ${linklength}>1  Append To List  ${LinkItems}  ${href}
    Log Many  ${LINK_ITEMS}
    Remove Values From List  ${href}  javascript:void(0)  \#
    ${link_items_length}  Get Length  ${LINK_ITEMS}
    @{errors_msg}    Create List
    : FOR  ${index}  IN RANGE  ${link_items_length}
    \  ${resp}  Get Request  ${LINK_ITEMS[${index}]}
    \  ${code}  Run Keyword And Return Status  Should Be Equal As Strings  ${resp.status_code}  200
    \  Run Keyword Unless  ${code}  Append To List  ${errors_msg}  error :${LINK_ITEMS[${index}]} | ${resp.status_code}
    ${check}  Run Keyword And Return Status  Lists Should Be Equal  ${errors_msg}  ${EMPTY}
    Run Keyword Unless  ${check}  Fail  Link \ assertion Failed with msg:\n@{errors_msg}

Ошибка, которую я получаю прямо сейчас - "RequestsLibrary.Get Request ожидается от 2 до 7 аргументов, получено 1. " Я пытался сделать это также с помощью create session , но затем он завершается ошибкой с сообщением " ** Утверждение ссылкиОшибка с сообщением: []"**

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Сначала нужно сделать это Create Session, а затем передать alias в качестве первого параметра для Get Request. Документация RequestsLibrary говорит, что это совершенно ясно.

Другое сообщение об ошибке показывает, что у вас есть пустой список в @{errors_msg}. Я полагаю, вам нужно передать туда индексный номер.

0 голосов
/ 25 октября 2019

Попробовал это, и это работает. Однако теперь он работает только для ссылок, начинающихся с https://www.crediwatch.com.. Кроме того, список href содержит некоторые mailto ссылки, которые следует отфильтровать.

*** Settings ***
Library    Collections
Library    RequestsLibrary
Library    SeleniumLibrary
Library    String
Test Setup    Open Browser    ${BASE_URL}
Test Teardown    Close Browser


*** Variables ***
${BASE_URL}    https://www.crediwatch.com

*** Test Cases ***
Broken links test
    ${element_list}=     get webelements     xpath=//a[@href]
    ${href_list}=  Evaluate  [item.get_attribute('href') for item in $element_list]
    Log    ${href_list}

    Create Session    testing    ${BASE_URL}
    FOR    ${element_href}    IN    @{href_list}
        ${uri}=    Remove String    ${element_href}    ${BASE_URL}
        ${contains_base_url}=    Evaluate     "${BASE_URL}" in "${element_href}"
        ${response}=    Run Keyword If    ${contains_base_url}    Get Request    testing    ${uri}
        Run Keyword If    ${contains_base_url}    Should Be Equal As Strings     ${response.status_code}    200
    END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...