【问题标题】:Type cast error when I cast webdriver javascriptExecutor to Dictionary当我将 webdriver javascriptExecutor 转换为 Dictionary 时,类型转换错误
【发布时间】:2014-10-29 09:23:18
【问题描述】:

全部,

我正在尝试在我的 webdriver 项目中使用 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 脚本的返回对象是什么。

感谢您的帮助。

【问题讨论】:

  • 我已经通过更改 JS 来解决这个问题,以返回单个计时并分配给对象,而不是返回所有计时。

标签: webdriver navigation-timing-api


【解决方案1】:

这样就可以了。

Map(String, Object) map = new HashMap(String, Object)();

map = (Map(String, Object)) ((JavascriptExecutor) 驱动程序) .executeScript(JS_SCRIPT);

【讨论】:

    【解决方案2】:

    我已通过更改 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;");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      相关资源
      最近更新 更多