Могу ли я считать строки на нескольких страницах таблицы с помощью каркаса робота? - PullRequest
0 голосов
/ 30 января 2019

Я довольно новичок в роботе, и работаю над ним соло всего месяц или около того.

В настоящее время я пытаюсь подсчитать общее количество строк в таблице в тестируемом приложении.(на основе хрома)

Это то, что я использую:

${count}=  get element count  //table[@class='options-table']/tbody/tr

, который возвращает значение 5 - это подсчет первой страницы.Тем не менее, я ожидаю, что это вернет 76, так как есть несколько страниц.

Может кто-нибудь помочь с тем, как вернуть количество строк на нескольких страницах?

${count}=  get element count  //table[@class='options-table']/tbody/tr

Ожидаемый результат: 76

Фактический результат: 5 (только первая страница)

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Пожалуйста, проверьте ниже код, предполагается, что общее количество страниц будет не более 100, так как я не знаю о веб-странице, вы можете взять этот номер с веб-страницы, если она доступна.Кроме того, если вы уверены, что общее количество строк на странице всегда равно 5, вы можете использовать приведенную ниже формулу [5 * (общее количество страниц - 1) + количество строк на последней странице]. Это может дать вам общее количество строк по всемстраницы, не проходя через все страницы.Кроме того, добавьте все этапы синхронизации времени для успешного запуска.

Get Count of All Pages
    ${next_page_locator}    Set Variable    enter next page icon/link xpath here
    ${first_row_locator}    Set Variable    enter first row xpath here
    ${total_count}    set variable    0
    : FOR    ${index}    IN RANGE    1    100
    \    Wait Until Element Is Visible    ${first_row_locator}
    \    ${count}    get element count    //table[@class='options-table']/tbody/tr
    \    ${total_count}    evaluate    ${count} + ${total_count}
    \    ${next_link_present}    Run Keyword And Return Status    Page Should Contain Element    ${next_page_locator}
    \    exit for loop if    ${next_link_present} is ${False}
    \    Click Element    ${next_page_locator}
0 голосов
/ 30 января 2019

Чтобы избежать слегка сложной логики (перебора страниц, суммирования количества элементов) в ключевом слове Robot Framework, вы можете написать собственное ключевое слово в Python, например.

В этом случаевам нужно ключевое слово, которое принимает элемент locator (точнее, //table[@class='options-table']/tbody/tr) и список page urls.

. Для реализации такого ключевого слова создайте файл, подобный ExtendedSeleniumLib.py:

from robot.libraries.BuiltIn import BuiltIn

def get_element_count_from_pages(locator, *page_urls):
    seleniumlib = BuiltIn().get_library_instance('SeleniumLibrary')

    element_count = 0

    for url in page_urls:
        seleniumlib.go_to(url)
        element_count += seleniumlib.get_element_count(locator)

    return element_count

и из своего тестового кода вы можете использовать его следующим образом:

*** Settings ***
Library     SeleniumLibrary
Library     ExtendedSeleniumLib

*** Variables ***
${SE HEADER LOCATOR}    //a[@class='site-header--link fs-headline1 fw-bold']

*** Test Cases ***
Count Elements On Multiple Pages Example
    [Setup]    Open Browser    https://stackoverflow.com    Firefox
    Maximize Browser Window
    Set Selenium Speed      0.1

    ${count}=   Get Element Count From Pages    ${SE HEADER LOCATOR}
    ...    https://iot.stackexchange.com/
    ...    https://sqa.stackexchange.com/
    ...    https://robotics.stackexchange.com/

    Should Be Equal As Integers     ${count}    3

    [Teardown]    Close Browser

В этом примере выполняется перебор трех сайтов Stack Exchange и подсчет элементов заголовка.Поскольку на каждой странице должен быть только один результат, ожидаемый результат равен 3. Исходя из этого, вы должны иметь возможность подсчитывать строки таблицы на своих страницах.

О том, как настроить путь поиска для библиотек и ресурсов, проверьтесоответствующая глава из Руководства пользователя Robot Framework; Настройка, где искать библиотеки и другие расширения .Если вы поместите файл python в ту же директорию, где находится файл робота, вам ничего не нужно делать.

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