如何獲取硒中的請求/響應日誌?我有一個AJAX調用返回的登錄信息,每當我試着通過捕捉到它:如何在Selenium中獲取響應頭文件?
selenium.captureNetworkTraffic("json");
它只返回客戶端的項目(如圖片.pn),但不是實際的JSON響應我很感興趣in。
如何獲取硒中的請求/響應日誌?我有一個AJAX調用返回的登錄信息,每當我試着通過捕捉到它:如何在Selenium中獲取響應頭文件?
selenium.captureNetworkTraffic("json");
它只返回客戶端的項目(如圖片.pn),但不是實際的JSON響應我很感興趣in。
不幸的是,它看起來並不像你可以用硒自動完成,因爲這是against their design principles for selenium。我不同意它(因爲它支持獲取cookie信息 - 用戶實際經歷並通過他們的cookie解析?)。
他們的'schtick'是,硒可以幫助你自動化用戶做什麼;由於用戶不關心響應頭,爲什麼這個框架?對我來說,這是令人失望的,因爲我需要確保返回的內容類型是我認爲應該的內容(測試API)。看起來another Stack Overflow question已經得出類似的結論。
我發現了一個訣竅,如果你使用jquery你可以註冊一個全球聽衆:
首先,你需要在你的主函數來聲明一個全局變量:
var globalVariableForSelenium = "";
在您的硒您註冊監聽器:
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor) driver)
.executeScript("$(document).ajaxSuccess(function(event, xhr, settings) { globalVariableForSelenium = settings.headers });");
}
然後您執行操作
Finaly你得到的全局變量的值:)
if (driver instanceof JavascriptExecutor) {
Object res = ((JavascriptExecutor) driver)
.executeScript("return serializeGlobalvariable();");
}
serializeGlobalvariable(是將序列化globalVariableForSelenium其中包含報頭的數組的函數。
PS:我的需要是接觸到Ajax響應,所以我設置的全局變量與xhr.responseJSON.mypath
我意識到這個問題是老得要命,但我已經開發出一種方法做這通過修改webdriver.xpi並創建driver.http_logger.variousLogMethods()來實現firefox + selenium。如果對此感興趣,請回復此帖,我可以將代碼發佈到github上。
我很感興趣。請發佈github鏈接。 – 2016-03-09 05:41:17
@ user2426679我也很感興趣,請問Github上如何執行此操作? – David542 2016-10-05 19:56:44
@ David542 - 我終於開始上傳這個小項目。我之前做了這個,所以文檔很少。 https://bitbucket.org/stbrownlow/seleniumwithfirefoxhttplogging/src – user2426679 2017-05-13 06:18:18
您可以通過注入一個XMLHttpRequest,並等待結果做到這一點:
Object response = ((JavascriptExecutor) driver).executeAsyncScript(
"var callback = arguments[arguments.length - 1];" +
"var xhr = new XMLHttpRequest();" +
"xhr.open('GET', '/resource/data.json', true);" +
"xhr.onreadystatechange = function() {" +
" if (xhr.readyState == 4) {" +
" callback(xhr.getResponseHeader());" +
" }" +
"};" +
"xhr.send();");
JsonObject json = new JsonParser().parse((String) response);
assertEquals("cheese", json.get("food").getAsString());
您可以修改XHR回調得到你想要的東西。
任何人都可以幫助我,我認爲硒應該顯然有內部點擊和響應它?沒有人試過這個? – sasikumar 2010-08-18 10:45:30