zoukankan      html  css  js  c++  java
  • katalon系列十六:代码运行时实时创建元素对象或列表

    Katalon的常规方法是先抓取元素并保存到仓库,在脚本中需要用到的时候调取,但假如元素属性和个数是可变的,就不能事先保存到仓库了,需要在脚本运行时实时创建。

     

    一、代码运行时,实时创建一个元素对象的例子

     1 import com.kms.katalon.core.testobject.ConditionType
     2 import com.kms.katalon.core.testobject.TestObject
     3 import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
     4 
     5 String dynamicId = 'Katalon123'
     6 String xpath = '//div[@id="' + dynamicId + '"]'
     7 TestObject to = new TestObject("objectName")
     8 to.addProperty("xpath", ConditionType.EQUALS, xpath)
     9 WebUI.click(to)
    10 
    11 //'Change selection method from another selector to XPATH selector'
    12 element.setSelectorMethod(SelectorMethod.XPATH)
    13 
    14 //'Change value of CSS selector'
    15 element.setSelectorValue(SelectorMethod.CSS, 'your_desired_value')

    二、但如果是有一组对象需要点击呢?比如每次页面生成不等的button,全部要点击一遍。

     1 import org.openqa.selenium.WebDriver as Webdriver
     2 import org.openqa.selenium.WebElement as WebElement
     3 import org.openqa.selenium.By as By
     4 import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
     5 
     6 //'获取driver'
     7 Webdriver driver = DriverFactory.getWebDriver()
     8 //'查找一组元素对象'
     9 List elementsList = driver.findElements(By.xpath('//span[@class="menu-text"]'))
    10 //'循环遍历每个对象'
    11 for (WebElement ele : elementsList) {
    12     ele.click()
    13     println(ele.text)
    14 }

    注意上面循环中我曾经踩过的坑,就是元素会实时变化,比如10个button,当你点击第1个button后,第10个会消失。这样for循环到第10个的时候,你再去点击,此时页面DOM已刷新,第10个button不存在了,就会报错元素not found。

    所以这里可以用一个计数变量配合continue、break结束循环;或者用while循环判断;也可以加入try catch截获异常。不会的话就先学下JAVA吧。

    参考:
    https://docs.katalon.com/katalon-studio/tutorials/handling_static_dynamic_test_objects.html
    https://docs.katalon.com/katalon-studio/tutorials/using_selenium_webdriver_katalon_studio.html
    https://docs.katalon.com/katalon-studio/docs/statements.html#in-manual-view-3

    ---------------------------------------------------------------------------------

    关注微信公众号即可在手机上查阅,并可接收更多测试分享~

  • 相关阅读:
    DPDK ring简单说明
    DPDK初始化流程
    从《雪白血红》说起(2)
    从《雪白血红》说起(1)
    苏联印象(1)-过往与想象
    DPDK ip分片与重组的设计实现
    linux协议栈分析-序
    DPDK与QoS(服务质量)
    DPDK LPM路由存储与查找
    《教父》曾说
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/10202327.html
Copyright © 2011-2022 走看看