Ошибка приведения типа, когда я преобразую веб-драйвер javascriptExecutor в словарь
Все,
Я пытаюсь использовать Navigation Timing API в своем проекте веб-драйвера. Это то, что я пытался, но выдает ошибку
public static Dictionary<String, Object> getTimingAPI(){
try{
Dictionary<String, Object> dict = new Hashtable<String, Object>();
dict = (Dictionary<String ,Object>) ((JavascriptExecutor)driver)executeScript("var performance = window.performance || window.webkitPerformance || window.mozPerformance || window.msPerformance || {}; var timings = performance.timing || {};return timings;");
return dict;
}catch (Exception e) {
System.err.println("Find browser timing : " + e);
}
return null;
}
Ошибка::
java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to java.util.Dictionary
,
Я пытался привести к String, Object и т. Д., Но всегда выдает ошибку. Мне интересно, что будет возвращаемым объектом этого Java-сценария.
Ценю твою помощь.
2 ответа
Таким образом, это работает.
Map (String, Object) map = new HashMap (String, Object) ();
map = (Map (String, Object)) ((JavascriptExecutor) драйвер) .executeScript(JS_SCRIPT);
Я решил эту проблему, изменив JS, чтобы он возвращал индивидуальные тайминги и присваивал объекту, а скорее возвращал все тайминги.
Object start = (Object) ((JavascriptExecutor) NavigationHelper.getWebDriver()).executeScript("var performance = window.performance || window.webkitPerformance || window.mozPerformance || window.msPerformance || {}; var timings = performance.timing.navigationStart || {};return timings;");