如何使用硒或任何其他库与Chrome中的开发人员工具进行交互



我正在尝试读取或与Chrome中开发人员工具的网络和控制台选项卡进行读取或交互。您能指导我如何实现这一目标吗?

谢谢

简短的答案是否。如何使用Java在Selenium Webdriver中打开Chrome Developer Console。作为提供的链接指出,您无法直接访问Chrome Developer工具。

但是,如果您对访问浏览器控制台和网络选项卡的内容感兴趣,则Selenium为您提供了一种方法。

System.setProperty("webdriver.chrome.driver", getChromeDriverLocation());
LoggingPreferences loggingprefs = new LoggingPreferences();
loggingprefs.enable(LogType.BROWSER, Level.WARNING);
loggingprefs.enable(LogType.PERFORMANCE, Level.WARNING);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(CapabilityType.LOGGING_PREFS, loggingprefs);
driver = new ChromeDriver(capabilities);

您可以根据需要打印日志

LogEntries logEntries = SeleniumBaseTest.getWebDriver().manage().logs()
            .get(org.openqa.selenium.logging.LogType.BROWSER);
for (LogEntry entry : logEntries) {
    System.out.println((String.format("%s %s %sn", new Date(entry.getTimestamp()), entry.getLevel(),
                entry.getMessage())));
}

LogType.BROWSER将为您提供browser consoleLogtype.PERFROMANCE将为您提供network tab

访问网络选项卡的其他方法是使用浏览器代理记录交易。http://www.seleniumeasy.com/selenium-tutorials/browsermob-proxy-selenium-example

在Python中,Pychrome在DevTools协议查看器的接口中正常工作。

以下是我与硒混合在一起的一个示例,用于主要请求和pychrome,因为我想在不下载两次的情况下获取图像...

import base64
import pychrome
def save_image(file_content, file_name):
    try:
       file_content=base64.b64decode(file_content)
       with open("C:\Crawler\temp\" + file_name,"wb") as f:
            f.write(file_content)
    except Exception as e:
       print(str(e))
def response_received(requestId, loaderId, timestamp, type, response, frameId):
    if type == 'Image':
        url = response.get('url')
        print(f"Image loaded: {url}")
        response_body = tab.Network.getResponseBody(requestId=requestId)
        file_name = url.split('/')[-1].split('?')[0]
        if file_name:
            save_image(response_body['body'], file_name)

tab.Network.responseReceived = response_received
# start the tab 
tab.start()
# call method
tab.Network.enable()
# get request to target the site selenium 
driver.get("https://www.realtor.com/ads/forsale/TMAI112283AAAA")
# wait for loading
tab.wait(50)

相关内容

最新更新