Как получить файл .har или сетевой запрос с помощью selenium4
Как мы знаем, одна из функций, добавленных в новую версию Selenium (4.0.0-alpha-2), - это очень хороший интерфейс для Chrome DevTools API на Java.DevTools API предлагает отличные возможности для управления браузером и веб-трафиком.
Согласно документации, использующей последнюю версию селена, мы можем захватить сетевой запрос из сеанса.
Раньше я использовал browsermob для получения сетевого запроса, но, к сожалению, они не обновляли его пару лет.
Я ищу того, кто использовал этот API инструментов разработчика selenium4 для получения всех внутренних запросов.
Может ли кто-нибудь подсказать мне, как мне начать получать все запросы? Спасибо заранее
1 ответ
Вы можете найти @adiohana пример "s в селеном хром-Devtools-примеры Repo на GitHub.
Я думаю, вы найдете этот тестовый пример полезным:
public class ChromeDevToolsTest {
private static ChromeDriver chromeDriver;
private static DevTools chromeDevTools;
@BeforeClass
public static void initDriverAndDevTools() {
chromeDriver = new ChromeDriver();
// dev-tools handler
chromeDevTools = chromeDriver.getDevTools();
chromeDevTools.createSession();
}
@Test
public void interceptRequestAndContinue() {
//enable Network
chromeDevTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
//add listener to intercept request and continue
chromeDevTools.addListener(Network.requestIntercepted(),
requestIntercepted -> chromeDevTools.send(
Network.continueInterceptedRequest(requestIntercepted.getInterceptionId(),
Optional.empty(),
Optional.empty(),
Optional.empty(), Optional.empty(),
Optional.empty(),
Optional.empty(), Optional.empty())));
//set request interception only for css requests
RequestPattern requestPattern = new RequestPattern("*.css", ResourceType.Stylesheet, InterceptionStage.HeadersReceived);
chromeDevTools.send(Network.setRequestInterception(ImmutableList.of(requestPattern)));
chromeDriver.get("https://apache.org");
}
Вам нужно добавить следующий импорт:
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.devtools.Command;
import org.openqa.selenium.devtools.Console;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.network.Network;
import org.openqa.selenium.devtools.network.model.BlockedReason;
import org.openqa.selenium.devtools.network.model.InterceptionStage;
import org.openqa.selenium.devtools.network.model.RequestPattern;
import org.openqa.selenium.devtools.network.model.ResourceType;
import org.openqa.selenium.devtools.security.Security;
import java.util.Optional;