我们在使用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