Python用selenium如何获取xhr里面payload的值?

发表于:2023-7-31 10:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:blueshell    来源:知乎

  要获取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),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号