【问题标题】:Unable to select an option from a drop down in Katalon studio无法从 Katalon 工作室的下拉菜单中选择一个选项
【发布时间】:2021-03-05 00:02:46
【问题描述】:

我是 Katalon Studio 的新手,我在选择下拉菜单时遇到了问题。 请在下面找到详细信息: 这是 HTML:

我尝试将 selectByIndex 与对象 xpath 一起使用: //div[@class='paCriteriaContainer']//select[@class = 'pa-criteria-select a-select initialized']

它没有选择任何选项并且失败并显示错误“无法通过对象的索引'2'选择选项”

注意:

  1. 我尝试单击输入,然后选择选项,但这似乎也不起作用。
  2. 按标签和值选择也不起作用

请帮帮我。 谢谢

【问题讨论】:

    标签: select katalon-studio


    【解决方案1】:

    尝试捕获一个对象,然后使用以下方法:

    WebUI.click(findTestObject(Your captured object))
    
    WebUI.selectOptionByValue(findTestObject(Your captured object), 'TEST (2020)', false)
    

    您是否按照我的描述进行了操作,但它不起作用?

    【讨论】:

    • 你能发布你到底在用什么以及错误信息吗?
    【解决方案2】:

    我尝试点击输入然后选择选项,但这似乎也不起作用。

    你确定在这种情况下你点击了正确的元素吗?

    尝试以下操作:以编程方式创建元素并按值选择(注意,值不是包含的文本,它是value html 属性):

    TestObject to = new TestObject().addProperty("xpath", ConditionType.EQUALS, "//div[@class='paCriteriaContainer']//select[@class = 'pa-criteria-select a-select  initialized']")
    WebUI.selectOptionByValue(to, '40696', false)
    

    【讨论】:

      【解决方案3】:

      您有一些选项可以做到这一点,我强烈建议您始终使用 xpath 来访问您想要使用的所有元素。原因是对象报告通常会失败,而且在我看来,这种方式要复杂得多。 但显然,如果 web 发生变化,xpath 会发生变化,所以要小心。

      The imports you need:
      import static org.junit.Assert.*
      import org.openqa.selenium.By
      import org.openqa.selenium.Keys
      import com.kms.katalon.core.webui.driver.DriverFactory as DriverFactory
      
      def driver = DriverFactory.getWebDriver()
      
      //If you want to click your input would be:
      WebUI.click(WebUI.convertWebElementToTestObject(driver.findElement(By.xpath("(//input[@id='a-select-paCricteriaId_6908'])"))))
      
      //**you just can click on "TestObject" type, and findElement returns "Element" type**
      

      如果你想选择你需要知道整个路径的选项(我无法用给定的信息得到它)。

      测试 xpath 的一个重要提示是在控制台模式 (F12) 下使用此功能:

      function getElementByXpath(path) {
          return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
      }
      
      //And this code in the same console to test your xpath:
      getElementByXpath("YOURTESTXPATH")
      

      此外,还有其他方法可以使用 xpath 达到相同的目标,例如:

      import com.kms.katalon.core.testobject.TestObject as TestObject
      ...
      TestObject tobj = new TestObject('myTestObject')
      String expr = '/some/valid/xpath/expression'
      tobj.addProperty('xpath', ConditionType.EQUALS, expr)
      WebUI.click(tobj)
      

      如果您在 Google 上搜索“如何通过 xpath katalon 获取元素”,您将获得大量信息。

      您可以在此处获取有关它的官方信息: https://docs.katalon.com/katalon-studio/tutorials/detect_elements_xpath.html#what-is-xpath

      【讨论】:

        【解决方案4】:

        在浏览器控制台中测试

        $x('//*[contains(@class, "pa-criteria-select a-select  initialized")]')
        

        如果出现多个结果,那么您可以这样访问它

        $x('(//*[contains(@class, "pa-criteria-select a-select  initialized")])[1]')
        

        那么你也可以访问他们的孩子

        $x('(//*[contains(@class, "pa-criteria-select a-select  initialized")])[1]/option')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2017-03-23
          • 2015-07-27
          • 2021-03-30
          • 2021-11-15
          • 1970-01-01
          • 2023-03-29
          相关资源
          最近更新 更多