首页 > 解决方案 > Katalon 执行嵌套的 Selenium WebDriver 发现

问题描述

我正在尝试在 Katalon Studio<li>中指定所有内容。<ul>我正在通过 Selenium WebDriver 尝试这个。我有这样的代码:

// login with valid account
WebUI.callTestCase(findTestCase('ValidLogin'), [('shouldCloseBrowser') : false], FailureHandling.STOP_ON_FAILURE)

// get the driver
WebDriver driver = DriverFactory.getWebDriver()

// Loop over selection of each company, and assert that we land on respective dashboard
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS)

WebElement companyListContainer = driver.findElement(By.id('companyList')) 
// finds this element OK


List<WebElement> companies = companyListContainer.findElements(By.xpath('.//li'))
 // this failed

for (int i = 1; i <= companies.length; i++) {
    // click the test object
    driver.findElement(By.xpath('//ul[@id="companyList"]/li[' + i + ']')).click() 
    // implicitly wait 3 seconds
    driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS) // we better be at the Dashboard page
    // go back to "Company Select"
    WebUI.click(findTestObject('a_Company Select'))
    // wait three seconds again
    driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS)
}

并且由于某种原因,即使<li>页面上有 s List<WebElement>,即使companyListContainer不是,它也是 null,并且包含这些元素。我该如何解决?

的HTML

好像 :

<ul id="companyList" class="list-group">

    <li class="list-group-item clickable " data--name="EzDine C2 - Michael" data--id="302">
        EzDine C2 - Michael
        <span class="list-check"><i class="fa fa-check text-success" aria-hidden="true"></i></span>
    </li>

    <li class="list-group-item clickable " data--name="EzDine Comp3 -Hos" data--id="303">
        EzDine Comp3 -Hos
        <span class="list-check"><i class="fa fa-check text-success" aria-hidden="true"></i></span>
    </li>

    <li class="list-group-item clickable " data--name="Test EZDine V2 Comp1" data--id="301">
        Test EZDine V2 Comp1
        <span class="list-check"><i class="fa fa-check text-success" aria-hidden="true"></i></span>
    </li>

</ul>

标签: seleniumkatalon-studio

解决方案


错误是因为最愚蠢的原因(不知何故,Katalon 没有告诉我):我试图访问length一个列表;/* 该成员不存在java.util.List!*/ 我改为size()并且它工作。

Katalon 确实有缺陷,因为没有提醒我这一点。/* 他们说null没有被定义,但不是说我试图访问一个不存在的成员 */


推荐阅读