Нажмите каждую кнопку в контейнере - PullRequest
0 голосов
/ 09 января 2020

Я хотел бы использовать Katalon для нажатия каждой кнопки в контейнере.

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

<div class="container">
    <div class="button">
        <a href="page1.html" class="description" role="button">
            Page 1
        </a>
    </div>
    <div class="button">
        <a href="page2.html" class="description" role="button">
            Page 2
        </a>
    </div>
    <div class="button">
        <a href="page3.html" class="description" role="button">
            Page 3
        </a>
    </div>
</div>

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

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

В Katalon Studio у меня есть следующий скрипт, который подсчитывает количество кнопок на странице.

WebUI.openBrowser('')
WebUI.navigateToUrl('http://button-container.com')
def buttonObject = findTestObject('Object Repository/Page_Buttons - div_button')
def buttonElements = WebUI.findWebElements(buttonObject, 5)
def numberOfButtons = buttonElements.size()

Я хотел затем выполнить l oop и щелкнуть по каждому из buttonElements, но похоже, что Katalon не позволяет щелкать Remote Web Elements. Я надеялся, что смогу использовать только один тестовый объект, поскольку они в основном одинаковы.

Как лучше всего нажимать каждую из кнопок в контейнере? Это вообще возможно?

1 Ответ

0 голосов
/ 10 января 2020

Я отказываюсь от использования Katalon. Katalon на самом деле не создан для того, что я пытаюсь выполнить sh.

. Для всех, кому интересно, я успешно использую Python и Selenium для манипулирования строкой XPATH для итерации по элементам.

Это выглядит как

for i in range(1, number_of_buttons + 1):
    button_xpath = '/html/body/div[1]/div[{}]/a'.format(i)
    button = driver.find_element_by_xpath(button_xpath)
    action.move_to_element(button)
    button.click()
...