首页 > 解决方案 > 单击容器中的每个按钮

问题描述

我想使用 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>

我希望能够单击每个按钮来访问它们的链接,方法是单击一个,返回上一页,然后单击下一个。

我也希望它是可扩展的,因为页面上可能并不总是有相同数量的按钮。

在 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()

然后我想循环并单击每个,buttonElements但看起来 Katalon 不允许单击远程 Web 元素。我希望我可以只使用单个测试对象而侥幸,因为它们大部分是相同的。

单击容器中每个按钮的最佳方法是什么?甚至可能吗?

标签: katalon-studiokatalon-recorder

解决方案


我正在放弃使用 Katalon。Katalon 并不是真正为我想要完成的任务而构建的。

对于任何想知道的人,我已经成功地使用 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()

推荐阅读