WebUI.getText () возвращает пустую строку - PullRequest
1 голос
/ 15 марта 2019

Я хочу получить текст моего TestObject, я использую WebUI.getText (). Мой код работает нормально для одной из моих страниц, но не работает для другой страницы. Я не могу понять, почему это терпит неудачу, все буквально одинаково, и это не должно потерпеть неудачу. Вот что я делаю:

    @Keyword
public boolean verifyIPAddr(Socket socket){
    //create test object for the ip header
    TestObject ipHeader =  new TestObject().addProperty("id", ConditionType.EQUALS, 'ipaddr-in-header')
    WebUI.waitForElementPresent(ipHeader, 20, FailureHandling.OPTIONAL)

    //get text (IP) from ipHeader
    String ipHeaderStr = WebUI.getText(ipHeader)
    KeywordUtil.logInfo("ipHeaderStr: " + ipHeaderStr.toString())
    //split the ipHeaderStr so that "IP: " portion can be removed and only "0.0.0.0" portion is left 
    String[] ipHeaderStrArr = ipHeaderStr.split(' ')
    //store the ip in a variable
    String guiIPAddress = ipHeaderStrArr[1]

    //get the socket side ip
    String cassetteIP = socket.getInetAddress().getHostAddress()
    KeywordUtil.logInfo(" address:" + cassetteIP)

    //validate that both are the same
    if(cassetteIP.equals(guiIPAddress)){
        KeywordUtil.logger.logPassed(guiIPAddress + " IP from GUI matches: " + cassetteIP + " from socket")
        return true;
    }
    else{
        KeywordUtil.logger.logFailed(guiIPAddress + " IP from GUI does not match: " + cassetteIP + " IP from socket")
         return false
         }
}

stack-traces[![][1]] 2

Я на 100% связан с WebUI.getText (), но меня смущает, потому что он работает для одной страницы, но не для другой.

Ниже приведен HTML-код рабочей страницы: HTML

Ниже приведен HTML-код страницы, которая не работает:

HTML2

Обновление:

Я только что заметил, что тот, который терпел неудачу, иногда терпит неудачу, а иногда проходит, я все еще хочу знать, как я могу гарантировать, что поведение остается стабильным.

1 Ответ

1 голос
/ 16 апреля 2019

Есть несколько вещей, которые вы можете попробовать:

  1. Вы можете добавить задержку перед получением текста элемента:
WebUI.delay(30)
Вы можете продлить время ожидания
WebUI.waitForElementPresent(ipHeader, 60, FailureHandling.OPTIONAL)

Причина в том, что код Katalon (Selenium) часто зависит от элементов вне сферы его влияния, таких как время загрузки, сетевой трафик, компьютерное оборудование,конкурирующие условия гонки и т. д.

Таким образом, даже при одном и том же коде иногда время ожидания будет отличаться, и поэтому лучше использовать гибкое ожидание (например, waitForElement*() методы).

...