0

全部,

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

感谢你的帮助。

4

2 回答 2

1

这样就可以了。

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

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

于 2016-02-09T13:28:46.820 回答
0

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

于 2014-10-30T05:45:51.163 回答