`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, " +