Проблема при вызове метода, имеющего функцию javascript - PullRequest
0 голосов
/ 14 мая 2018

Мой тестовый класс терпит неудачу, когда я вызываю метод из другого класса, который содержит функцию javascript.

Проблема при приведении.Метод java-скрипта из отдельного класса приведен ниже

public long javatimeout(WebDriver driver)
{
    JavascriptExecutor js =  (JavascriptExecutor) driver;
    long loadTime = (long) js.executeScript(
                "return (window.performance.timing.loadEventEnd - window.performance.timing.navigationStart) / 1000");
    System.out.println("Screen Loading time is " +loadTime);
    return loadTime;

}

Внутри тестового класса вызывается метод "javatimeout" внутри метода login.

`public class TC01login {

WebDriver driver;
WebDriverWait wait;

Commonclass obj1 = new Commonclass();

public void login()
{
    driver.get("https://staging.agshealth.com/NexGenQMS/#/upload");

    long timetaken = obj1.javatimeout(driver);
    System.out.println(timetaken);
}`

FAILED: login java.lang.ClassCastException: java.base / java.lang.Double нельзя привести к java.base / java.lang.Long

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Похоже, ваша проблема в том, что метод executeScript возвращает значение java.lang.Double ... Нельзя привести объект java.lang.Double к объекту java.lang.Long!Попробуйте что-то вроде этого:

long loadTime = js.executeScript(...).longValue();

Или убедитесь, что JS возвращает целое число вместо двойного значения!Для получения дополнительной информации см. JavascriptExecutor # executeScript .Более безопасный способ будет выглядеть примерно так:

long loadTime;
Object returnObject = js.executeScript(...);

if(returnObject instanceof Number)
{
    loadTime = ((Number) returnObject).longValue();
}
0 голосов
/ 14 мая 2018

Ваше приведение к (long) является ошибочным.

Согласно документам, когда десятичное значение возвращается из кода javascript, тогда JavascriptExecutor возвращает Double:

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html

Длинный возвращается, когда из кода Javascript возвращается недесятичное значение.

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