in

ChromeDevTools en selenium, esperando cuerpos de respuesta

Necesito trabajar en la respuesta ajax, esa es una de las respuestas recibidas al visitar una página. Uso herramientas de desarrollo de selenio y java. Creo un oyente, que intercepta una solicitud específica y luego quiero trabajar en la respuesta que trae. Sin embargo, necesito configurar la espera estática, o de lo contrario, el selenio no tiene tiempo para guardar RequestId. Leí la documentación de Chrome Dev Tools, pero es algo nuevo para mí. Me pregunto si hay un método que me permita esperar a que se complete esta llamada, además de la espera estática.

Aquí está mi código:

    @Test(groups = "test")
    public void x() throws InterruptedException, JsonProcessingException {
        User user = User.builder();
        ManageAccountStep manageAccountStep = new ManageAccountStep(getDriver());
        DashboardPO dashboardPO = new DashboardPO(getDriver());
        manageAccountStep.login(user);
        DevTools devTools = ((HasDevTools) getDriver()).maybeGetDevTools().orElseThrow();
        devTools.createSessionIfThereIsNotOne();
        devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
        // end of boilerplate
        final RequestId[] id = new RequestId[1];
        devTools.addListener(Network.responseReceived(), response -> {
            log.info(response.getResponse().getUrl());
            if (response.getResponse().getUrl().contains(DESIRED_URL)){
                id[0] = response.getRequestId();
            }
        });
        dashboardPO
                .clickLink(); // here is when my DESIRED_URL happens 
        Utils.sleep(5000); // Something like Thread.sleep(5000)
        String responseBody = devTools.send(Network.getResponseBody(id[0])).getBody();
        // some operations on responseBody
        devTools.clearListeners();
        devTools.disconnectSession();
    }

Si no uso 5 segundos espera id la variable nunca se asigna y anulo la excepción del puntero requestId is required. Durante estos 5 segundos log.info imprime todas las llamadas api que están ocurriendo y casi siempre encuentra mi id. Sin embargo, me gustaría abstenerme de la espera estática. Estoy pensando en algo similar a tal vez jQuery.active()==0pero mi página no usa jQuery.

0

¿Te ayudó la respuesta?

Subscribirse
Notificar por
guest
0 Comentarios
Inline Feedbacks
Ver todas las Respuestas

Crear espacios de búfer en metros alrededor de la línea LineString en KML usando Python

¿Dónde encontrar doctorados financiados por la industria?