Ошибка приведения типа, когда я преобразую веб-драйвер 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;");

Другие вопросы по тегам