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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM