`rtserver-id`在java字符串中变为`rtserver-id`

`rtserver-id`在java字符串中变为`rtserver-id`,java,javascript,selenium,selenium-webdriver,webdriver,Java,Javascript,Selenium,Selenium Webdriver,Webdriver,我有以下代码: public void foo (){ String script = "var aLocation = {};" + "var aOffer = {};" + "var aAdData = " + "{ " + "location: aL

我有以下代码:

public void foo (){
        String script =
                "var aLocation = {};" +
                        "var aOffer = {};" +

                        "var aAdData = " +
                        "{ " +
                        "location:  aLocation, " +
                        "offer:    aOffer " +
                        " };" +

                        "var aClientEnv = " +
                        " { " +
                        "    sessionid:     \"\", " +
                        "   cookie:        \"\", " +
                        "   rtserver-id: 1,   " +
                        "       lon:           34.847, " +
                        "       lat:           32.123, " +
                        "       venue:         \"\", " +
                        "    venue_context: \"\", " +

                        "    source:        \"\"," +   // One of the following (string) values: ADS_PIN_INFO,
                        // ADS_0SPEED_INFO, ADS_LINE_SEARCH_INFO,
                        // ADS_ARROW_NEARBY_INFO, ADS_CATEGORY_AUTOCOMPLETE_INFO,
                        // ADS_HISTORY_LIST_INFO
                        // (this field is also called "channel")

                        "    locale:        \"\"" + // ISO639-1 language code (2-5 characters), supported formats:
                        " };" +


                        "W.setOffer(aAdData, aClientEnv);";

            javascriptExecutor.executeScript(script);
}
我有两个问题:

  • 当我调试并复制
    script
    value时,我看到的是一个成员
    rtserver-id
    ,而不是
    rtserver-id
    怎么可能呢?代码因此引发异常
  • 即使我删除了这个
    rtserver id
    成员(并且没有引发异常)

    我在这个浏览器控制台中计算
    a位置
    ,得到
    “变量未定义”
    。这怎么可能


    rtserver id
    不是有效的标识符-因此,如果希望将其作为字段/属性名,则需要引用它。您可以在Chrome Javascript控制台中看到这一点,无需涉及任何Java:

    > var aClientEnv = { sessionId: "", rtserver-id: 1 };
    
    未捕获的语法错误:意外标记-

    未定义

    对象{sessionId:,rtserver id:1}

    基本上,我不认为有任何东西在增加空格——你只是得到了一个无效的脚本。您可以轻松地在Java代码中添加引号:

    "   \"rtserver-id\": 1,   " +
    

    无论如何,我不希望
    rtserver id
    是一个有效的标识符。你确定这实际上与Java有关吗?如果您只是想要有效的JSON,请尝试将其放在引号中。。。在确定问题是将脚本传输到Javascript执行器还是其他方面后,如果您能给出一个简单的示例,这将非常有用。我将尝试。但我如何解释,即使没有这个有问题的成员,我仍然无法通过浏览器控制台访问这些VAR?我会尝试。但我如何解释,即使没有这个有问题的成员,我仍然无法通过浏览器控制台访问这些变量?@EladBenda:我不清楚你的意思,但这听起来像是一个完全独立的问题,与你最初询问的错误无关。(我根本不清楚您是如何运行此代码的。)
    > aClientEnv
    
    "   \"rtserver-id\": 1,   " +