MPMG-DCC-UFMG / C01

Coleta de Dados Públicos
GNU General Public License v3.0
18 stars 9 forks source link

Erro 'waiting for selector <XPath> to be visible' em sistema distribuído #10011

Open isabel-elise opened 1 year ago

isabel-elise commented 1 year ago

Comportamento Esperado

Uma sequência de passos em coleta dinâmica executada no sistema distribuído deveria ter resultado igual ao da mesma sequência executada no sistema atual. O objetivo da coleta em questão é alterar o tamanho da página no endereço https://trescoracoes-mg.portaltp.com.br/consultas/documentos.aspx?id=48, o que é feito com sucesso na versão não distribuída da ferramenta.

Comportamento Atual

A execução dos passos apresentados na seção Especificações da Coleta produzem um erro waiting for selector <XPath> to be visible que não ocorre na reprodução da mesma sequência de passos na versão não distribuída do sistema no MP.

Passos para reproduzir o erro

  1. Utilizar o sistema distribuído para criar um novo coletor
  2. Marcar a opção de Processamento Dinâmico
  3. Inserir os passos especificados na seção seguinte
  4. Verificar o aparecimento do erro waiting for selector \"xpath=//a[@id='ctl00_containerCorpo_grdData_DXPagerBottom_PSP_DXI5_T']\" to be visible

Especificações da Coleta

Passos do Processamento Dinâmico:

  1. Esperar 4 segundos
  2. Screenshot
  3. Clicar "//*[@id="ctl00_containerCorpo_grdData_DXPagerBottom_PSB"]/div/span"
  4. Esperar 1 segundo
  5. Screenshot
  6. Clicar "//a[@id='ctl00_containerCorpo_grdData_DXPagerBottom_PSP_DXI5_T']"
  7. Screenshot

Arquivo de configuração:

{
    "source_name": "[Realiza\u00e7\u00e3o-F01] Coleta Teste de Concursos P\u00fablicos de Tr\u00eas cora\u00e7\u00f5es",
    "base_url": "https:\/\/trescoracoes-mg.portaltp.com.br\/consultas\/documentos.aspx?id=48",
    "obey_robots": false,
    "ignore_data_crawled_in_previous_instances": false,
    "crawler_description": "Teste",
    "crawler_type_desc": "Outro",
    "crawler_issue": 0,
    "data_path": "realizacaof01\/tres_coracoes\/teste_concursos",
    "sc_scheduler_persist": true,
    "sc_scheduler_queue_refresh": 10,
    "sc_queue_hits": 10,
    "sc_queue_window": 60,
    "sc_queue_moderated": true,
    "sc_dupefilter_timeout": 600,
    "sc_global_page_per_domain_limit": null,
    "sc_global_page_per_domain_limit_timeout": 600,
    "sc_domain_max_page_timeout": 600,
    "sc_scheduler_ip_refresh": 60,
    "sc_scheduler_backlog_blacklist": true,
    "sc_scheduler_type_enabled": true,
    "sc_scheduler_ip_enabled": true,
    "sc_scheduler_item_retries": 3,
    "sc_scheduler_queue_timeout": 3600,
    "sc_httperror_allow_all": true,
    "sc_retry_times": 3,
    "sc_download_timeout": 10,
    "antiblock_download_delay": 2,
    "antiblock_autothrottle_enabled": false,
    "antiblock_autothrottle_start_delay": 2,
    "antiblock_autothrottle_max_delay": 10,
    "antiblock_ip_rotation_enabled": false,
    "antiblock_ip_rotation_type": "tor",
    "antiblock_max_reqs_per_ip": 10,
    "antiblock_max_reuse_rounds": 10,
    "antiblock_proxy_list": "",
    "antiblock_user_agent_rotation_enabled": false,
    "antiblock_reqs_per_user_agent": 100,
    "antiblock_user_agents_list": "",
    "antiblock_insert_cookies_enabled": false,
    "antiblock_cookies_list": "",
    "captcha": "none",
    "has_webdriver": false,
    "webdriver_path": "",
    "img_xpath": "",
    "sound_xpath": "",
    "dynamic_processing": true,
    "browser_type": "chromium",
    "skip_iter_errors": false,
    "browser_resolution_width": 1280,
    "browser_resolution_height": 720,
    "explore_links": false,
    "link_extractor_max_depth": null,
    "link_extractor_allow_url": "",
    "link_extractor_allow_domains": "",
    "link_extractor_tags": "",
    "link_extractor_attrs": "",
    "link_extractor_check_type": false,
    "link_extractor_process_value": "",
    "download_files": false,
    "download_files_allow_url": "",
    "download_files_allow_extensions": "",
    "download_files_allow_domains": "",
    "download_files_tags": "",
    "download_files_attrs": "",
    "download_files_process_value": "",
    "download_files_check_large_content": true,
    "download_imgs": false,
    "steps": "{\"step\":\"root\",\"depth\":0,\"children\":[{\"step\":\"espere\",\"depth\":1,\"arguments\":{\"segundos\":\"4\"}},{\"step\":\"screenshot\",\"depth\":1,\"arguments\":{}},{\"step\":\"clique\",\"depth\":1,\"arguments\":{\"elemento\":\"\\\"\/\/*[@id=\\\"ctl00_containerCorpo_grdData_DXPagerBottom_PSB\\\"]\/div\/span\\\"\"}},{\"step\":\"espere\",\"depth\":1,\"arguments\":{\"segundos\":\"1\"}},{\"step\":\"screenshot\",\"depth\":1,\"arguments\":{}},{\"step\":\"clique\",\"depth\":1,\"arguments\":{\"elemento\":\"\\\"\/\/a[@id='ctl00_containerCorpo_grdData_DXPagerBottom_PSP_DXI5_T']\\\"\"}},{\"step\":\"screenshot\",\"depth\":1,\"arguments\":{}}]}",
    "encoding_detection_method": 1,
    "expected_runtime_category": "fast",
    "templated_url_parameter_handlers": [],
    "templated_url_response_handlers": [],
    "instance_id": "167511962895548",
    "crawler_id": 8005
}
albertoueda commented 1 year ago

Reforço a prioridade dessa issue para a F01, pois bloqueia diversas coletas do template MunicipalNet.

louisaturn commented 1 year ago

Oi pessoal, tudo bem? @isabel-elise @albertoueda @rennancl

Estou trabalhando nesta issue e, pela importância dela e a demora para resolver, eu vou dar algumas satisfações do que eu fiz até agora.

Primeiramente, no exemplo de coletor, um dos XPaths está usando aspas duplas dentro e fora dele, o que causa um erro no sistema, porque ele não sabe reconhecer onde termina o Xpath neste caso. Mas acredito que esta configuração ocorreu por acidente, já que o coletor de vocês é funcional.

Segundamente, eu testei na branch master a execução deste coletor e não tive sucesso: eu interrompi a coleta que estava "parada" após três horas de execução, nada foi coletado e nenhum screenshot foi tirado. Gostaria de saber se o funcionamento desse coletor é recente na trilha de vocês, porque não funcionou comigo.

Finalmente, de qualquer forma, o erro reportado acontece no sistema distribuído, com a versão do processamento dinâmico implementada em Playwright. Fiz algumas alterações no nosso código de mecanismos de passos, até agora sem sucesso. O que fiz foi criar um coletor equivalente standalone, que funcionou corretamente. Foi um alívio porque eu havia acreditado que era um problema do Playwright. Gostaria que checassem se são esses screenshots os desejados por vocês:

  1. screenshot1

  2. screenshot2

  3. screenshot3

No mais, estou ainda investigando as diferenças entre o que acontece no sistema e no meu coletor standalone. Já detectei o uso de funções deprecadas e uso de mecanismos de espera que diferenciam o funcionamento das versões.

Um abraço para vocês, espero dar boas notícias logo. (:

isabel-elise commented 1 year ago

Olá, @louisaturn!

A última vez que a execução da configuração do exemplo foi testada na branch master foi próximo ao dia 30 de janeiro, um pouco mais de um mês atrás. O comportamento esperado é exatamente o exibido nos screenshots que você mostrou!

Muito obrigada pelas atualizações! Um ótimo trabalho! :)

louisaturn commented 1 year ago

Pessoal! Boas notícias! @isabel-elise @albertoueda @rennancl

Consegui fazer com que o Xpath esteja visível. Consegui este screenshot com todos os Concursos listados:

2023-03-13 19:32:47 152788

Tenho um porém: para que carregasse a página como está acima, tive que colocar um "esperar" logo acima do screenshot. Sem o "esperar, a página ficou assim: com a opção "Todos" selecionada, mas ainda sem aparecer toda a lista, conforme abaixo:

2023-03-13 19:28:20 139471

Gostaria de saber se isso é um problema para vocês. Se não for, realizarei a Pull Request com as alterações imediatamente.

Abraços! Espero que esteja conforme esperado. Ótimo trabalho para vocês :)

isabel-elise commented 1 year ago

Olá, @louisaturn!

A necessidade da inclusão do passo "Esperar" não é um problema, só o fato do Xpath estar vísivel já é ótimo!

Muito obrigada pelo trabalho! :)