Чтобы избежать слегка сложной логики (перебора страниц, суммирования количества элементов) в ключевом слове 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 в ту же директорию, где находится файл робота, вам ничего не нужно делать.