selenium中获取http请求/返回

我们在使用selenium做UI自动化时,很多情况下定位问题困难,请求的唯一ID是什么?当时请求出错了返回的是什么?怎么定位?

光UI截图还是有点不直观,有时候我们会想怎么获取请求或返回response?

 

一、selenium自身不支持

 首先在selenium源生的API支已经表明不支持了,github上也说明了,以后也不会加了

  

 

 

 google上讨论的链接:https://code.google.com/p/selenium/issues/detail?id=141

 

二、解决方案

这时我们可以换个思路来思考,浏览器都有F12的功能,我们能不能通过这个方式来获取内容。看看解决方法:

Java版本:

LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

LogEntries logs = driver.manage().logs().get("performance");

Python版本:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

ca = DesiredCapabilities.CHROME
ca["goog:loggingPrefs"] = {"performance": "ALL"}
driver = webdriver.Chrome(desired_capabilities=ca)
driver.get("http://xxx")
logs = driver.get_log("performance")
print(logs)

这时,你会看到所有的请求,及返回内容,包括header

 

三、其它方案:

网上还有其它的方法。下面这里给链接,就不详细说明了:

1、selenium-wire  方法。具体可以看pypi的文档。有个不便处就是。log全打出来了

2、Browser-Mob  方法。建立代理的一个类似方案。需要安装java及启动proxy

posted @ 2021-11-08 16:24  Believer007  阅读(5675)  评论(0编辑  收藏  举报