要获取XHR(XMLHttpRequest)的payload值,您可以使用Selenium中的WebDriverWait和ExpectedConditions方法来等待XHR请求并获取其响应。
以下是使用Python和Selenium获取XHR payload值的示例代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
# 启动浏览器并打开网页
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 等待XHR请求并获取响应
wait = WebDriverWait(driver, 10)
xhr = wait.until(EC.presence_of_element_located((By.XPATH, '//[@id="some-id"]')))
xhr_payload = xhr.get_attribute('value')
print(xhr_payload)
# 关闭浏览器
driver.quit()
在这个例子中,我们首先打开一个网页,然后等待包含XHR响应的元素出现。然后,我们使用get_attribute方法来获取该元素的“value”属性,这是XHR响应的payload。
要使用这个代码,您需要替换“https://www.baidu.com”和“//[@id="some-id"]”为您自己的网址和XHR元素的XPATH表达式。
不过我更建议使用微软的playwright。非常好使,兼容性更好。
以下是使用Playwright获取XHR payload值的示例代码:
from playwright.sync_api import Playwright, sync_playwright
def get_xhr_payload(playwright: Playwright, url: str) -> str:
with playwright.chromium.launch(headless=True) as browser:
withbrowser.new_context() as context:
page = context.new_page()
responses = []
def response_callback(response):
if url in response.url:
responses.append(response)
page.route(url, response_callback)
#打开网页并等待XHR请求完成
page.goto('https://example.com')
page.wait_for_load_state('networkidle')
# 获取XHR响应的payload
xhr_payload = responses[0].body()
return xhr_payload
# 使用playwright获取XHR响应的payload
with sync_playwright() as playwright:
xhr_payload = get_xhr_payload(playwright, 'https://example.com/api')
print(xhr_payload)
在这个例子中,我们使用Playwright启动了一个Chromium浏览器,打开了一个新页面,并注册了一个回调函数来捕获XHR响应。然后,我们等待页面的网络空闲状态,并获取了第一个匹配指定URL的XHR响应的payload。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理