javascript - 如何在 javascript 中捕获 xmlhttprequests 挂起计数
问题描述
如前所述,如何在 javascript 中捕获 xmlhttprequests 未决计数。我在 python 中使用 selenium。
想要捕获等待完成的 xmlhttprequests 的数量。
找到了一个有用的链接并尝试了答案中提到的以下javascript。但是没有正确理解并且总是将 XMLHttpRequest.active 设为零。任何人都可以解释逻辑或任何其他建议。
来自用户https://stackoverflow.com/users/2887618/florent-b
我已经包含了动态注入屏幕的javascript。
jscript = ("(function() {" +
" var send = XMLHttpRequest.prototype.send;" +
" var release = function(){ --XMLHttpRequest.active };" +
" var onloadend = function(){ setTimeout(release, 1) };" +
" XMLHttpRequest.active = 0;" +
" XMLHttpRequest.prototype.send = function() {" +
" ++XMLHttpRequest.active;" +
" this.addEventListener('loadend', onloadend, true);" +
" send.apply(this, arguments);" +
" };})();")
print(jscript)
driver.execute_script(jscript)
isxmlhttpactive = driver.execute_script("return (window.XMLHttpRequest.active);")
解决方案
目前我已经使用下面的逻辑来查找任何活动的 xhr 请求正在等待
from bs4 import BeautifulSoup
from requests import get
from selenium import webdriver
from msedge.selenium_tools import Edge, EdgeOptions
import difflib
import time
path = r'c:/msedgedriver.exe'
options = EdgeOptions()
options.use_chromium = True
options.add_argument('disable-gpu')
driver = Edge(executable_path=path, options=options)
driver.get(url)
is_jquery_present = driver.execute_script("return (typeof jQuery != 'undefined');")
if is_jquery_present == True:
is_active_ajax_request = driver.execute_script("return ($.active);")
while is_active_ajax_request >= 1:
time.sleep(2)
is_active_ajax_request = driver.execute_script("return ($.active);")
推荐阅读
- javascript - 在第一次为 let 变量赋值后,它的值没有改变#JavaScript
- flutter - 如何报警颤动屏幕关闭状态
- r - 使用 dplyr 在 R 中基于方言和年龄组创建一个新的百分比列
- r - R从列表中的元素名称中提取数字并将提取的数字作为新列插入每个元素
- spring - spring cloud config server什么时候调用github仓库?
- android - 适用于 android 和 IOS 应用程序的 ssl-pinning 正确方法
- bash - 根据时间戳对文件中的行进行排序
- javascript - 事件 { "isTrusted": false } 使用 Expo 和 XMLHttpRequest
- deployment - 在暂存(完整)沙箱中测试发布工件
- php - 在本地 Mac OS 上使用 Supervisord 运行的 Laravel 应用程序的 Guzzle HTTP / Curl 错误 7