我最近更新了硒從2.19.0到2.31.0。我在爲測試目的設置userAgent時遇到問題。下面是代碼:通過硒設置userAgent拋出異常
void testMessage() {
verifySomething(this.driver, "iPhone");
}
void verifySomething(WebDriver driver, String userAgent) {
String script = null;
if (driver instanceof HtmlUnitDriver) {
script = "navigator.userAgent=" + "'" + userAgent + "';";
}
else {
// something
}
((JavascriptExecutor) driver).executeScript(script);
}
我收到以下錯誤:
======= EXCEPTION START ========
EcmaError: lineNumber=[1] column=[0] lineSource=[] name=[TypeError] sourceName=[injected script] message=[TypeError: Cannot set property [Navigator].userAgent that has only a getter to iPhone. (injected script#1)]
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot set property [Navigator].userAgent that has only a getter to iPhone. (injected script#1)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:663)
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:559)
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:525)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:594)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:569)
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:996)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.executeScript(HtmlUnitDriver.java:466)
...
...
== CALLING JAVASCRIPT ==
function() {
navigator.userAgent = "iPhone";
}
======= EXCEPTION END ========
我知道它是抱怨二傳手。它使用硒2.19.0工作,但我想他們可能已經將屬性更改爲只讀。
任何幫助,高度讚賞。
同意,但問題是建立,如果無論如何欺騙userAgent?我的網頁支持不同的功能取決於userAgent是什麼,我需要通過編程設置userAgent測試這個場景。 – slashdot 2013-04-04 20:19:35
我不知道,但看看這裏[鏈接](http ://developer.android.com/tools/devices/index.html),你可以模擬一個手機。 – e1che 2013-04-04 21:55:32