From 53510efccbae7e056b887ac3fefd62fcfd5c2e7a Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Guedes Date: Thu, 6 Jan 2022 11:11:32 -0300 Subject: [PATCH] Creating new Chrome methods. --- api/chrome/cli.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/api/chrome/cli.py b/api/chrome/cli.py index a8e2675..1a0b590 100644 --- a/api/chrome/cli.py +++ b/api/chrome/cli.py @@ -1,6 +1,7 @@ import json import os import urllib +from typing import List import requests @@ -204,4 +205,61 @@ class Chrome: raw_return = self.__request_raw_post__("/ipc/chrome/eval/"+id, command) - return raw_return['result']['result']['value'] if ('value' in raw_return['result']['result']) else None \ No newline at end of file + return raw_return['result']['result']['value'] if ('value' in raw_return['result']['result']) else None + + def wait (self, id: str, condition: str, to: int): + """ + ## Chrome Wait + Espera por uma determinada quantidade de tempo até que a condição passada como parâmetro seja verdadeira. + + --- + #### Parâmetros: + - id: Identificador da aba em que se quer utilizar o método. + - condition: Condição que se quer verificar. É bastante comum utilizar este método para aguardar que elementos da página web carreguem, para isso, utilize o formato: comando_para_o_elemento != undefined. + - to: Tempo limite de espera pelo valor de verdade da condição. + + --- + #### Retorna: + - Sucesso: "ok". + - Falha: Mensagem de erro. + """ + + return self.__request_raw_post__(f"/ipc/chrome/wait/{id}?to={to}", condition) + + def send(self, id: str, method: str, parameters: dict = {}): + """ + ## Chrome Send + Este método realiza a manipulação da página cujo id for informado através de domínios do Chrome Dev Tools Protocol. Para mais informações sobre como utilizar esta ferramenta, visite o site: + + https://chromedevtools.github.io/devtools-protocol/ + + --- + #### Parâmetros: + - id: Identificador da página web em que se quer realizar a manipulação. + - method: Nome do método DTP que se quer aplicar. + - parameters: Parâmetros requeridos pelo método informado no parâmetro anterior. Caso o método não exija parâmetros, não envie nada. + + --- + #### Retorna: + -> O retorno desta função não é previsivel, ele varia de acordo com qual método DVP foi utilizado e o respectivo retorno dele. + """ + + object = {"method": method, "params": parameters} + return self.__request_json_post__("/ipc/chrome/send/"+id, object) + + def open_tabs (self) -> List[dict]: + """ + ## Chrome Open Tabs + Este método busca todas as abas abertas no navegador Chrome e retorna dados sobre elas. + + --- + #### Parâmetros: + --- + + --- + #### Retorna: + -> Lista de dicionários com o nome das abas e outras informações sobre as mesmas. + """ + + ret = self.__request_get__("/ipc/chrome/opentabs") + return ret \ No newline at end of file