我嘗試使用selenium web驅動程序瀏覽頁面。瀏覽器控制檯無法識別注入硒webdriver的js vars
然後我通過硒web驅動程序注入並執行一些js。
我試圖在這個打開的瀏覽器控制檯中訪問這些變量, 但似乎他們沒有創建。怎麼來的?
我有這樣的代碼:
public void foo(){
String script =
"var aLocation = {};" +
"var aOffer = {};" +
"var aAdData = " +
"{ " +
"location: aLocation, " +
"offer: aOffer " +
" };" +
"var aClientEnv = " +
" { " +
" sessionid: \"\", " +
" cookie: \"\", " +
" 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 = 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: "", locale: "" }; W.setOffer(aAdData, aClientEnv);
我在這個瀏覽器控制檯評估aLocation
並獲得"variable not defined"
。怎麼會這樣?
我的答案並不建議使用全局變量。它只是回答關於他的變量發生了什麼的OP問題。另外如果我理解你的權利,你的第二段和第四段是矛盾的。聲明var foo不聲明全局變量foo – nilesh 2015-02-11 21:27:59
你不明白我的答案。 – Louis 2015-02-11 21:29:45
很有可能。我不理解這部分「例如,如果var foo = 1在函數作用域之外執行,它將聲明一個名爲foo的全局變量。」 – nilesh 2015-02-11 21:32:01