【问题标题】:Click Each Button In Container单击容器中的每个按钮
【发布时间】:2020-01-09 14:26:48
【问题描述】:

我想使用 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 元素。我希望我可以只使用单个测试对象,因为它们大部分是相同的。

点击容器中每个按钮的最佳方式是什么?有没有可能?

【问题讨论】:

  • 你能分享对象库中findTestObject('Object Repository/Page_Buttons - div_button')的定义吗?

标签: katalon-studio katalon-recorder


【解决方案1】:

我正在放弃使用 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()

【讨论】:

  • Katalon 在后台使用 Groovy 和 Selenium,所以这只是一个偏好问题。你可以用 Katalon 做同样的事情。
猜你喜欢
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2017-11-20
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2021-07-08
相关资源
最近更新 更多