0

最近、セレンを 2.19.0 から 2.31.0 に更新しました。テスト目的で 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);
}

次のエラーが表示されます。

======= 例外開始 ========

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)
...
...

== JAVASCRIPT の呼び出し ==

  function () {
      navigator.userAgent = "iPhone";
  }

======= EXCEPTION END ======== 

セッターに文句を言っているのはわかっています。以前は Selenium 2.19.0 で動作していましたが、プロパティが読み取り専用に変更された可能性があります。

どんな助けでも大歓迎です。

4

2 に答える 2

0

navigator.userAgent には何も設定できません。

navigator.UserAgent は、現在のブラウザに関する単なる情報です。

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

于 2013-04-04T19:59:50.740 に答える
0

FF の場合は、これ (profile.setPreference("general.useragent.override", "your useragent")) を使用して、すべてを firefox プロファイルから設定する必要があります。

于 2013-04-08T12:17:04.180 に答える