2013-04-04 83 views
0

我最近更新了硒從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工作,但我想他們可能已經將屬性更改爲只讀。

任何幫助,高度讚賞。

回答

0

你不能在navigator.userAgent中設置任何東西。

navigator.UserAgent只是關於您當前瀏覽器的信息。

http://www.w3schools.com/jsref/prop_nav_useragent.asp

+0

同意,但問題是建立,如果無論如何欺騙userAgent?我的網頁支持不同的功能取決於userAgent是什麼,我需要通過編程設置userAgent測試這個場景。 – slashdot 2013-04-04 20:19:35

+0

我不知道,但看看這裏[鏈接](http ://developer.android.com/tools/devices/index.html),你可以模擬一個手機。 – e1che 2013-04-04 21:55:32

0

對於FF使用這種(profile.setPreference( 「general.useragent.override」, 「您的用戶代理」) 一切都需要從Firefox的配置。

+0

HtmlUnitDriver有什麼等價物嗎? – slashdot 2013-04-08 13:58:19

+0

String userAgent =「Mozilla/5.0(X11; Linux x86_64)AppleWebKit/537.17(KHTML,如Gecko)Chrome/24.0.1312.57 Safari/537.17「; //或您的useragent BrowserVersion瀏覽器=新的BrowserVersion(applicationName,applicationVersion,userAgent,browserVersionNumeric) – buddy 2013-04-09 12:33:12