Downloads

Versões anteriores do Chrome

Para versões anteriores do Chrome, confira as versões do ChromeDriver compatíveis.

Para mais informações sobre como selecionar a versão certa do ChromeDriver, consulte a página Seleção de versão.

ChromeDriver 148

Correções de bugs

  • Acesso ao DOM: foi corrigida uma falha que ocorria ao simular um clique de botão em um iframe aninhado em uma raiz shadow fechada. O JavaScript usado anteriormente para encontrar o ID do elemento de frame do proprietário não conseguia acessar raízes de sombra fechadas. A nova implementação usa diretamente o formato f.X.d.Y.e.Z para resolver o frame (crrev.com/c/7594919, Bug: 469831357).
  • Segurança: reforçamos a limpeza de argumentos do Chrome para evitar uma possível vulnerabilidade envolvendo injeção de argumentos posicionais (crrev.com/c/7695604, Bug: 494464734).
  • Teste: aumentamos o tempo limite de kImplicitWait para testes de FindElement(s)WhileNavigating em commands_unittest ao executar no AddressSanitizer (ASAN). O tempo limite padrão de 3 segundos era insuficiente para que o loop de novas tentativas consumisse todos os erros simulados sob a sobrecarga do ASAN, causando instabilidade (crrev.com/c/7657276).

Mudanças e refatorações internas

  • Padrões C++: substituição de inclusões supérfluas de base/functional/callback_forward.h em arquivos //chrome .cc, reforçando o uso de callback.h quando os callbacks são realmente utilizados (crrev.com/c/7200285, Bug: 40318405). Movemos logging::LoggingSettings de base/logging.h para o próprio cabeçalho base/logging/logging_settings.h para melhorar a eficiência da compilação (crrev.com/c/7173024, relanding crrev.com/c/7160150 após a reversão crrev.com/c/7170750). Foram corrigidos vários erros de IWYU relacionados a base/logging.h (crrev.com/c/7730403, Bug: 499476145).
  • Padrões C++: substituímos verificações de mapa redundantes count(key) seguidas por pesquisas com acessos de iterador find(key) mais eficientes (crrev.com/c/7705392, crrev.com/c/7693277, Bug: 452950815). Injetamos ThreadDelegate pelo construtor Thread para melhorar o encapsulamento e adicionamos uma opção Restartable a Thread para acomodar casos em que as linhas de execução precisam ser reiniciadas (crrev.com/c/7696887, Bug: 40881604).
  • Segurança de memória: convertemos macros #pragma allow_unsafe_buffers em UNSAFE_TODO() granulares em todo o arquivo chrome/ (crrev.com/c/7132241, Bug: 409340989). Encurtamos IOBuffer->span().first() para IOBuffer->first() (crrev.com/c/7159119).
  • Dependências: lançamos a dependência crossbench, trazendo correções para descobrir binários do ChromeDriver criados localmente no macOS e no Android (crrev.com/c/7673978).
  • Teste: reativamos o esquema module em chromedriver_py_tests após correções na infraestrutura de teste e build subjacente (crrev.com/c/7707960).

ChromeDriver 147

Correções de bugs

  • Teste: adicionamos um teste de regressão hermético para verificar se o ElementClick processa corretamente os cliques em iframes de origem cruzada com elementos de sobreposição, especificamente em cenários de isolamento de site. Isso garante que os cliques não sejam encaminhados erroneamente para o conteúdo incorporado em vez da sobreposição visível (crrev.com/c/7261984, Bug: 42321834, Bug: 42322220).

Mudanças e refatorações internas

  • Padrões C++: renomeamos os modos e funções de decodificação de URL para aderir ao guia de estilo C++ do Google, mudando DecodeURLMode para DecodeUrlMode e DecodeURLEscapeSequences() para DecodeUrlEscapeSequences() (crrev.com/c/7593238). Introduzimos url::UrlEscapeDecoder para simplificar o uso da decodificação de URL em toda a base de código (crrev.com/c/7610180). Remoção de inclusões build/branding_buildflags.h desnecessárias dos arquivos //chrome (crrev.com/c/7595125, Bug: 40318405). Removemos a lógica BUILDFLAG(IS_FUCHSIA) de //chrome, exceto no ChromeDriver (crrev.com/c/5485913, Bug: 41481724).
  • Segurança de memória (spanificação): resolvemos marcadores UNSAFE_TODO em utilitários do ChromeDriver, migrando-os para implementações seguras baseadas em intervalos (crrev.com/c/7562602, Bug: 435317390).

ChromeDriver 146

Correções de bugs

  • Estabilidade: corrigimos uma falha do ChromeDriver que podia ocorrer ao processar um comando se a janela fosse fechada simultaneamente (por exemplo, enquanto esperava a conclusão de uma navegação). A correção adquire um bloqueio no objeto WebView para evitar que ele seja descartado prematuramente (crrev.com/c/7257074, Bug: 468228355).
  • Segurança: adicionamos uma verificação de cabeçalho Origin para conexões WebSocket recebidas ao servidor HTTP do ChromeDriver, evitando possível sequestro entre origens (crrev.com/c/7538400, Bug: 478783560).
  • Teste: movemos testWebviewDetactedDuringClick para o filtro instável, ignorando-o em todas as execuções, e não apenas no modo sem interface gráfica (crrev.com/c/7545378, Bug: 481485821).

Mudanças e refatorações internas

ChromeDriver 145

Novos recursos

  • Teste: atualizamos a estrutura de teste run_py_tests.py para aceitar testes de string determinísticos de vários tamanhos (por exemplo, 53, 101 e 501 caracteres) segmentando elementos input, textarea e contenteditable. Isso oferece cobertura de regressão, garantindo que nenhum caractere seja descartado durante operações longas de send_keys (crrev.com/c/7221410, Bug: 428116078).
  • Teste: adicionamos um teste específico para o elemento HTML <selectlist> (crrev.com/c/7420729, Bug: 342889200).

Correções de bugs

  • Capturas de tela: revertemos o escalonamento das capturas de tela de elementos, já que a especificação do WebDriver não prescreve o escalonamento e era inconsistente com outras funções de captura de tela (crrev.com/c/7409603, Bug: 42323022).
  • Teste: correção de falhas em testClientHintsDeviceNameIPhoneX e testClientHintsDeviceNameIPad ao atualizar as expectativas de teste do ChromeDriver para corresponder aos valores corretos recentes (para campos de plataforma, platformVersion, modelo e dispositivos móveis) introduzidos no front-end do DevTools (crrev.com/c/7408699, Bug: 474179501).

Mudanças e refatorações internas

  • Padrões C++: migramos vários usos de base::Contains() para std::ranges::contains() em //chrome (crrev.com/c/7411011, Bug: 470391351), incluindo correções de formatação necessárias (crrev.com/c/7247217). Refatoração de parâmetros de string para std::string_view para evitar alocações de string desnecessárias ao usar substr() (crrev.com/c/7350716). Removidas inclusões <map> desnecessárias dos cabeçalhos //chrome (crrev.com/c/7225838, Bug: 40318405). Correção da ordem de inclusão em alguns arquivos (crrev.com/c/7366868). Substituímos os callbacks legados BodyAsStringCallbackDeprecated nos usos de SimpleURLLoader por BodyAsStringCallback, que utiliza std::optional em vez de std::unique_ptr (crrev.com/c/7210000, Bug: 40258809).
  • Teste: reenvio da configuração do teste de campo InfobarPrioritization, incluindo correções para evitar falhas nos testes do navegador ChromeDriver ao processar infobars pendentes que não foram adicionadas à hierarquia de visualização (crrev.com/c/7223590, Bug: 447176374). Reimplementação da filtragem por país e localidade para o recurso Glic, que foi revertida anteriormente devido a falhas de teste não relacionadas (crrev.com/c/7245749, reimplementação crrev.com/c/7148759 após a reversão crrev.com/c/7233767, Bug: 454431875).

ChromeDriver 144

Novos recursos

  • Permissões: atualizamos o comando SetPermission para aderir à especificação mais recente do W3C, usando o URL do frame atual (origem incorporada) além da origem de nível superior. Isso configura corretamente permissões como storage-access que dependem do contexto incorporado (crrev.com/c/7106801, relanding crrev.com/c/7093216 após a reversão crrev.com/c/7104484, Bug: 384959114).
  • Teste: adicionamos testMetadata (incluindo o nome do teste) ao payload de upload do teste do ChromeDriver para oferecer suporte ao endossador de instabilidade ao usar IDs de teste estruturados (crrev.com/c/7124354, Bug: 456432041).

Correções de bugs

  • Ciclo de vida de destino: correção de um bug em que o ChromeDriver ficava parado se um frame pai fosse desconectado enquanto um frame filho aguardava uma resposta de comando. Agora, o ChromeDriver desvincula explicitamente e de forma transitiva os frames descendentes quando um WebViewImpl principal é bloqueado e marcado como desvinculado durante o processamento de comandos (crrev.com/c/7080912, Bug: 438436830).
  • Gerenciamento de janelas: desativamos a execução em segundo plano de janelas ocluídas especificamente para sessões do ChromeDriver. Isso resolve problemas no WebDriver BiDi em que os testes podiam falhar se o navegador considerasse incorretamente uma janela ocluída e a limitasse (crrev.com/c/7128058, Bug: 458027819).

Mudanças e refatorações internas

  • Padrões C++: remoção de inclusões supérfluas de base/functional/callback_forward.h em arquivos //chrome .cc, reforçando o uso de callback.h quando os callbacks são realmente utilizados (crrev.com/c/7200285, Bug: 40318405). Movemos logging::LoggingSettings de base/logging.h para o próprio cabeçalho base/logging/logging_settings.h para melhorar a eficiência da compilação (crrev.com/c/7173024, relanding crrev.com/c/7160150 após a reversão crrev.com/c/7170750). Migração de usos de base::HexEncode para o base::HexEncodeLower mais recente (crrev.com/c/7103100, Bug: 456472080).
  • Segurança de memória (spanificação): migramos WriteToPipe e WriteToPipeNoBestEffort nos testes de unidade PipeBuilder e PipeConnection para aceitar base::span, corrigindo o uso não seguro de buffer (crrev.com/c/7090293, Bug: 455758227). Conversão de #pragma allow_unsafe_buffers em todo o arquivo para macros UNSAFE_TODO() granulares em chrome/ (crrev.com/c/7132241, Bug: 409340989). Encurtamos IOBuffer->span().first() para IOBuffer->first() (crrev.com/c/7159119).

ChromeDriver 143

Correções de bugs

  • Estabilidade: correção de uma falha de uso após liberação (UAF) em OverrideNetworkConditions. O ponteiro bruto salvo para aplicação subsequente era liberado entre chamadas consecutivas. Agora, ele é gerenciado corretamente (crrev.com/c/7047422, Bug: 42323833).
  • Teste: corrigimos testes de toque instáveis do Android ChromeDriver usando a API WaitForCondition para uma sincronização mais confiável (crrev.com/c/6978928, Bug: 42321861).
  • Pré-aquecimento do DSE: desativamos o recurso Prewarm no ChromeDriver por padrão usando a chave --disable-features=Prewarm, impedindo que páginas pré-aquecidas interfiram na execução do teste e na descoberta de destino (crrev.com/c/7007072, Bug: 431928370).

Mudanças e refatorações internas

  • Padrões de C++: troca de ref_counted.h por scoped_refptr.h em cabeçalhos //chrome em que apenas o ponteiro inteligente é usado, melhorando a eficiência da compilação (crrev.com/c/7080753, Bug: 40245294). Migração dos acessadores GURL para as variantes Get* (por exemplo, GetSpec() em vez de spec()) para indicar claramente a alocação de strings, evitando penalidades acidentais de performance (crrev.com/c/7002119, Bug: 448174617).
  • Teste: remoção de padrões de verificação redundantes em devtools_client_impl_unittest.cc usando ADD_FAILURE() (crrev.com/c/6998270). Adição de um teste de regressão para crbug.com/413382905 (crrev.com/c/6879417).

ChromeDriver 142

Novos recursos

  • Diagnóstico: adicionamos o status TERMINATION_STATUS_EVICTED_FOR_MEMORY para diferenciar processos encerrados proativamente pelo navegador (para economizar memória) de processos que falharam devido a erros de falta de memória (OOM). No momento, isso se comporta de maneira idêntica a uma falha de OOM (exibindo uma guia triste), mas prepara o terreno para um tratamento distinto no futuro (crrev.com/c/6991933, Bug: 394092280).
  • Diagnóstico: adicionamos a capacidade goog:processID à resposta do WebDriver, que retorna o ID do processo principal do navegador para computador. Isso alinha o ChromeDriver com o moz:processID do Firefox e ajuda a testar APIs de acessibilidade da plataforma (crrev.com/c/5825307, Bug: 438884256).
  • Teste: adicionamos suporte para uploads estruturados de IDs de teste ao ResultSink para testes de integração do Python do ChromeDriver (crrev.com/c/6916708, Bug: 418015486).

Correções de bugs

  • Diagnóstico: o comportamento do ChromeDriver foi modificado em uma saída normal do Chrome para não emitir mais uma mensagem de erro genérica e confusa relacionada ao uso de user-data-dir. Agora, ele afirma explicitamente que a instância foi encerrada e direciona o usuário aos registros detalhados do erro específico gerado pelo Chrome (crrev.com/c/6977507, Bug: 42323434).
  • Inicialização: estrutura de inicialização do ChromeDriver atualizada para continuar compatível com as mudanças do Selenium WebDriver v4.16.0 (crrev.com/c/6630600).
  • Android: correção de CheckAppInstalled em versões legadas do Android (anteriores ao Android 11) em que a flag --user cur não é compatível com o gerenciador de pacotes (crrev.com/c/6785949, Bug: 433885051).
  • Teste: correção de um bug em que IgnoreDuplicateNavs substituía incorretamente as chaves de recursos padrão no ChromeDriver. O recurso foi desativado para sessões do ChromeDriver, e a lógica Switches::SetFromSwitches foi corrigida (crrev.com/c/6949166, Bug: 445332809).

Mudanças e refatorações internas

  • Padrões C++: substituímos várias chamadas base::JSONWriter::Write() descontinuadas por base::WriteJson(), mantendo o comportamento de retornar uma string vazia em caso de falha quando o valor de retorno não foi verificado (crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Exigência de ativação explícita para opções de análise JSON não compatíveis (por exemplo, permitir comentários) em base::JSONReader::Read e base::JSONReader::ReadAndReturnValueWithError (crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Removemos os pragmas #pragma allow_unsafe_buffers em todo o arquivo após esforços manuais de spanificação (crrev.com/c/6778035, Bug: 409340989). Uso limpo da macro LazyInstance com vazamento (crrev.com/c/6781377, Bug: 432815283). Incluímos cabeçalhos ausentes para http_response_headers.h via IWYU (crrev.com/c/6894196, Bug: 40216326).
  • Segurança de memória (spanificação): spanificação automática de vários ponteiros no diretório chrome/ para builds do Linux, adicionando CHECKs não fatais quando os parâmetros de tamanho eram considerados redundantes (crrev.com/c/6734592, Bug: 431824299).
  • Teste: desativamos temporariamente testDoesntCrashOnClosingBrowserFromAsyncScript no macOS (crrev.com/c/6995358, Bug: 446461733). Correção de erros de digitação em nomes de métodos de teste envolvendo "Certificates" (crrev.com/c/6950683). Formatação automática de arquivos //chrome/test GN (crrev.com/c/6789277, Bug: 40760278).
  • FedCM: introduzimos uma função ShouldShowAccountsPassiveDialog em IdentityDialogController para verificar de forma síncrona se uma caixa de diálogo de contas precisa ser mostrada, corrigindo uma falha relacionada a verificações assíncronas e instrumentação do DevTools (crrev.com/c/6780413, Bug: 425801332).
  • Pré-inicialização do DSE: adicionamos Page.setPrewarmingAllowed ao protocolo DevTools como uma solução de curto prazo para ativar ou desativar manualmente a pré-inicialização, corrigindo testes relacionados para garantir que eles interajam corretamente com a página principal (crrev.com/c/6847287, Bug: 431928370). Ativamos o recurso DSEPrewarm em fieldtrial_testing_config.json para macOS e Windows depois de resolver a instabilidade (crrev.com/c/6951835, Bug: 431928370, Bug: 435621391). Observação: o comando CDP e a ativação do teste de campo foram revertidos porque eram mudanças incompatíveis para usuários do WebDriver, expondo destinos inesperados e causando outros problemas downstream, respectivamente (crrev.com/c/6966133, crrev.com/c/6966161, Bug: 445883308).
  • Limpeza: removemos as referências restantes ao projeto WebLayer sem suporte no código Android (crrev.com/c/6792520, Bug: 40272607).

ChromeDriver 141

Novos recursos

  • Teste: adicionamos suporte à flag --enable-per-test-tracing a run_wpt_tests.py, correspondendo ao comportamento de run_web_tests.py. Isso recupera eventos de rastreamento JSON de um buffer interno do ChromeDriver e os salva no diretório de resultados do teste (crrev.com/c/6820247, Bug: 434017035).

Correções de bugs

  • Diagnóstico: impedimos que o ChromeDriver imprimisse o próprio stack trace interno ao retornar um erro kTabCrashed. Isso evita confundir os usuários e garante que o stack trace de falha do renderizador permaneça nos registros (crrev.com/c/6841669, Bug: 395131239).

Mudanças e refatorações internas

  • Padrões C++: substituímos chamadas memset potencialmente não seguras pela inicialização agregada padrão do C++ (instance = {}) em chrome/ para evitar o bypass de construtores e garantir a segurança da memória (crrev.com/c/6875520, Bug: 435317390). Adicionamos as diretivas #include ausentes para //base/time/time.h via IWYU (crrev.com/c/6832689, Bug: 40216326). Reescrevemos pragmas de buffer não seguro forçado (crrev.com/c/6828538).
  • Teste: adicionamos um teste de regressão para crbug.com/413382905 (crrev.com/c/6879417).
  • Transições de visualização: o fix de transições de visualização foi reincorporado, atualizando o trabalho feito antes da resolução da promessa concluída, depois que uma reversão especulativa anterior vinculada a falhas de teste do ChromeDriver foi comprovadamente incorreta (crrev.com/c/6846765, reincorporando crrev.com/c/6806850 após a reversão crrev.com/c/6808537).

ChromeDriver 140

Correções de bugs

  • Seleção de destino: corrigimos um problema em que a janela do DevTools podia disputar com a página principal para ser selecionada como a janela principal quando o Chrome era iniciado com --auto-open-devtools-for-tabs. Agora, o ChromeDriver exclui explicitamente destinos com prefixo devtools:// durante a determinação da janela principal (crrev.com/c/6769505, Bug: 427908560).
  • Seleção de destino: impedimos que o ChromeDriver calculasse incorretamente o ponto central em exibição dos elementos ignorando qualquer corte de overflow:hidden imposto pelos ancestrais. Isso alinha o cálculo com a especificação do WebDriver e outros cenários PerformActions (crrev.com/c/6735230, Bug: 42322257).
  • Android: corrigimos a função CheckAppInstalled em versões mais antigas do Android (antes do Android 11), em que a flag --user cur para o gerenciador de pacotes não é compatível (crrev.com/c/6785949, Bug: 433885051).
  • Teste: corrigimos a instabilidade no pacote de testes chromedriver_py_tests causada pelo recurso DSEPrewarm. Agora, o ChromeDriver desativa o gatilho de pré-inicialização enquanto um cliente CDP está anexado para evitar contagens de destino inesperadas durante os testes (crrev.com/c/6764274, Bug: 423465927, Bug: 431928370).
  • Teste: revertemos a adição da função ShouldShowAccountsPassiveDialog ao IdentityDialogController (parte do FedCM), o que causou uma regressão (crrev.com/c/6780413, Bug: 425801332).

Mudanças e refatorações internas

ChromeDriver 139

Correções de bugs

  • Estrutura de inicialização: atualizamos a estrutura de inicialização do ChromeDriver para manter a compatibilidade com as atualizações do Selenium WebDriver v4.16.0 (crrev.com/c/6630600).
  • Análise de argumentos: uniu vários argumentos --js-flags (semelhante ao tratamento de --enable-features) em vez de usar apenas o último fornecido. Isso melhora a usabilidade ao transmitir flags complexas do V8 (crrev.com/c/6612042, Bug: 421941798).

Mudanças e refatorações internas

  • Segurança de memória (spanificação): substituição de usos descontinuados de base::MakeStringPiece() por std::string_view em //chrome/test (crrev.com/c/6628089, Bug: 422940464). Incluímos base/strings/string_view_util.h onde base::as_string_view() é usado, preparando para futuras migrações de namespace (crrev.com/c/6625024, Bug: 423048781).
  • Padrões C++: melhoria da conformidade com o Include What You Use (IWYU) em //chrome ao incluir explicitamente <vector> (crrev.com/c/6652818), base/notimplemented.h (e remover base/notreached.h quando não usado) (crrev.com/c/6655452, Bug: 41493641), base/strings/string_util.h (crrev.com/c/6607646), base/strings/string_number_conversions.h (crrev.com/c/6593576) e remover inclusões supérfluas de base/debug/stack_trace.h (crrev.com/c/6622838).
  • Teste: portou a opção --driver-logging para run_wpt_tests.py, permitindo que o script despeje o ChromeDriver e o navegador stderr mesmo em níveis de detalhamento mais baixos (crrev.com/c/6608138, Bug: 421262910).
  • Teste: reativamos os testes de integração do ChromeDriver que estavam desativados: testes de captura de tela (testTakeElementScreenshot*) (crrev.com/c/6598797, Bug: 42321815), testes de fechamento de janela via JavaScript (testCloseWindowUsingJavascript*) (crrev.com/c/6598978, Bug: 42321150) e testes de tamanho de janela headless-shell (crrev.com/c/6621336, Bug: 42323661).
  • Teste: corrigimos run_wpt_tests.py --stable para identificar e usar corretamente a versão estável atual do Clank (Android) analisando o APK e atualizamos o script para baixar a versão correspondente do ChromeDriver do Chrome for Testing (CfT) em um diretório temporário em vez de poluir o checkout (crrev.com/c/6635694, Bug: 402548382).
  • Infraestrutura de build: removemos uma dependência de build desnecessária em write_build_config.py ao impedir que destinos android_resources() tenham manifestos, já que a mesclagem de manifestos e a nomenclatura de pacotes R.java agora são processadas por atributos especializados (crrev.com/c/6625266, Bug: 413331591).
  • FedCM: foi corrigida uma flag de recurso de configuração do Finch relacionada ao FedCM (crrev.com/c/6614137, Bug: 421959289).

ChromeDriver 138

Novos recursos

  • Gerenciamento de recursos de exibição: comportamento atualizado do ChromeDriver para segmentos de janela de visualização de acordo com uma resolução recente do CSS Working Group. Agora, ele retorna consistentemente uma matriz com um único segmento quando um dispositivo dobrável é usado na horizontal ou para todos os dispositivos não dobráveis. Isso corresponde ao comportamento da consulta de mídia e reduz os riscos de impressão digital (crrev.com/c/6469455, Bug: 414430842).
  • Preferências e estado local (Android): foi adicionado suporte aos recursos localState e prefs ao executar o ChromeDriver em dispositivos Android. Isso depende do ADB e exige uma flag user-data-dir personalizada. No momento, ele inicializa o estado com modelos padrão (crrev.com/c/6397155, Bug: 406427226).

Correções de bugs

  • Estabilidade: foi corrigida uma falha do ChromeDriver que ocorria no macOS quando um usuário dispensava a caixa de diálogo da primeira experiência de execução (FRE, na sigla em inglês) usando o botão "Continuar". A falha ocorreu devido à substituição de um estado de erro kTargetDetached e à tentativa de acessar um WebView inválido (crrev.com/c/6538867, Bug: 410599467).
  • Teste de desempenho: corrigimos o executor de testes crossbench em bots de pinpoint do Windows que tentavam localizar o binário do ChromeDriver usando um caminho ../Release_x64 obsoleto quando --browser=release_x64 era transmitido. Isso fazia com que ele voltasse a baixar um binário mais antigo em vez de usar o build local (crrev.com/c/6502134).

Mudanças e refatorações internas

  • Segurança de memória (spanificação): substituímos ponteiros não verificados em WebSocket::OnReadDuringHandshake e WebSocket::OnReadDuringOpen por base::span, resolvendo avisos de unsafe-buffer-usage (crrev.com/c/6557346, Bug: 354307328). Removemos pragmas #pragma allow_unsafe_buffers desnecessários em chrome/test/chromedriver que não eram mais necessários após outras migrações (crrev.com/c/6503154, Bug: 414858406).
  • Padrões C++: removemos diretivas #include "url/gurl.h" e #include <queue> desnecessárias em cabeçalhos chrome/, adicionando declarações antecipadas quando apropriado para melhorar os tempos de compilação (crrev.com/c/6578272, crrev.com/c/6570349, Bug: 40318405).
  • Migração da API: migrou RSAPrivateKey para crypto::PrivateKey e SHA256HashString para crypto::Sha256, limpando um caso de tratamento de erros obsoleto, já que as novas APIs de geração de chaves são infalíveis (crrev.com/c/6490294, Bug: 372283556).
  • Teste: adicionamos o atributo OwnContributionEstimate aos comandos de automação da API Compute Pressure (implementações do CDP e do testdriver) (crrev.com/c/6373001, Bug: 402033762).
  • Teste: correção dos testes de integração que verificam ClearDisplayFeatures em bots de integração contínua (CFT) simplificando as declarações para verificar se os segmentos da janela de visualização são limpos e voltam ao tamanho padrão (crrev.com/c/6535067, Bug: 417195296).
  • Teste: aumentamos os tempos limite para testes do WebDriver da API Protected Audience para resolver a instabilidade em bots de CI mais lentos (crrev.com/c/6494277).

ChromeDriver 137

Novos recursos

  • Gerenciamento de recursos de exibição: adicionamos comandos do ChromeDriver para emular e limpar recursos de exibição, implementando os requisitos de automação para as APIs Viewport Segments (CSS e JS). Isso permite que os desenvolvedores testem programaticamente cenários de dobra ou articulação em dispositivos dobráveis ou de tela dupla (crrev.com/c/6368674, Bug: 40137084).
  • BiDi: o ChromeDriver foi atualizado para executar o BiDi Mapper em um destino oculto por padrão. Isso impede que a página data:, do mapeador interfira na execução do teste e na visibilidade. Para depurar o mapeador, os clientes podem transmitir a flag --debug-bidi-mapper para executá-lo em uma guia visível (crrev.com/c/6441064, relanding crrev.com/c/6433672 após a reversão crrev.com/c/6439633, Bug: 402339952).

Correções de bugs

  • BiDi: impedimos que o ChromeDriver fechasse incorretamente toda a sessão do navegador ao processar comandos BiDi (como browsingContext.close) se ele perdesse o controle de destinos criados por outras sessões do CDP ou BiDi. Agora ele sincroniza explicitamente as guias de nível superior antes de decidir encerrar o navegador (crrev.com/c/6440293, Bug: 42323838).
  • BiDi: alinhado com a especificação upstream do WebDriver BiDi, garantindo que o ChromeDriver remova a capacidade goog:channel se ela for transmitida como uma string vazia, tratando-a de forma idêntica a um canal ausente (crrev.com/c/6438865, Bug: 409282307).
  • Entrada: correção de um problema em que eventos de toque e de ponteiro falhavam ou se comportavam incorretamente. Para isso, o ChromeDriver foi atualizado para oferecer suporte a coordenadas x e y fracionárias (usar pontos flutuantes) em comandos de movimento do ponteiro (crrev.com/c/6440834, Bug: 409684333).
  • Seleção de destino: impediu que iframes fora do processo (OOPIFs) de PDF abertos em visualizações de convidados (quando o recurso PdfOopif está desativado) vazassem para a lista de destinos de nível superior. A lógica de filtragem foi expandida para excluir corretamente esses destinos prefixados com chrome-extension:// (crrev.com/c/6383500, Bug: 396611138).

Mudanças e refatorações internas

  • Padrões C++: a mudança para usar std::string_view em nomes de arquivos em LogMessage e eventos de rastreamento foi reintroduzida, resolvendo os problemas com o processamento de strings terminadas em nulo que causaram reversões anteriores (crrev.com/c/6430129, reintrodução de crrev.com/c/6395097, reintrodução de crrev.com/c/6387020 após a reversão crrev.com/c/6383699).
  • Padrões de C++: modernização das chamadas Environment::GetVar em //chrome para usar a API de retorno std::optional em vez de parâmetros externos (crrev.com/c/6417343, Bug: 400758498).
  • Padrões C++: refatoração de helpers de identificadores específicos do Windows de win_util.h para um cabeçalho windows_handle_util.h dedicado para evitar problemas de dependência circular (crrev.com/c/6418805, Bug: 406023316).
  • Teste: adicionamos um gerenciador de domínio Browser específico do Android e implementamos a API Browser.getWindowForTarget para oferecer suporte a testes de criação de janelas do Android (crrev.com/c/6427605, Bug: 404932444).
  • Teste: correção de instabilidade em testes do macOS causada por extensões que demoravam muito para inicializar (crrev.com/c/6423229, Bug: 407804497).
  • Teste: desativamos temporariamente a criação paralela de user-data-dir em testBrowserWithUsedUserDataDir ao executar em chrome-headless-shell, já que isso entrava em conflito com o bloqueio exclusivo no macOS (crrev.com/c/6470455, Bug: 411407649, Bug: 380903149).
  • Extensões: testes atualizados do Chrome para serem aprovados quando o teste de campo ExtensionManifestV2Unsupported está ativado. Essa é uma etapa fundamental, mas o teste em si permanece desativado até que as atualizações sejam feitas em outros repositórios (crrev.com/c/6415997, Bug: 367395349). Observação: uma tentativa anterior de ativar esse teste usando a configuração foi revertida crrev.com/c/6397497, revertendo crrev.com/c/6358257.
  • Dependências: rolagem manual da dependência catapult e atualização dos arquivos pydeps associados e referências devil_util (crrev.com/c/6480814, crrev.com/c/6466865, relanding crrev.com/c/6406098 após a reversão crrev.com/c/6448910, Bug: 397459590).

ChromeDriver 136

Novos recursos

  • Ciclo de vida do navegador: adicionamos um recurso específico do Chrome quitGracefully que força o ChromeDriver a tentar interromper o navegador normalmente (usando Browser.close ou SIGTERM) em vez do SIGKILL padrão. Isso dá aos depuradores, como o rr, tempo para descartar as gravações antes que o processo seja encerrado (crrev.com/c/6322538, relançamento crrev.com/c/6269180 após uma breve reversão crrev.com/c/6320536, Bug: 339644807).
  • Teste: conectou o argumento run_wpt_tests.py --wrapper gerando um script de wrapper temporário que prefixa o binário do navegador com o depurador (por exemplo, rr) e os argumentos dele. Isso contorna a incapacidade do ChromeDriver de substituir o binário diretamente quando args são processados como chaves (crrev.com/c/6271108, Bug: 339644807).
  • Teste: ativamos a tradução por preferência em TranslateEnabledTest para oferecer suporte a um ambiente de teste em que o ChromeDriver gerencia o processo do navegador e ignora a nova restrição --remote-debugging-port quando --user-data-dir é implícito (crrev.com/c/6354089, Bug: 327797500).
  • DevTools: adicionamos suporte ao recurso de várias instâncias do DevTools para abrir uma nova guia em outra janela no Android (crrev.com/c/6352169, Bug: 401269942, Bug: 382183406).

Correções de bugs

  • Seleção de destino: foi corrigido um problema em que iframes fora do processo (OOPIFs) de PDF abertos em visualizações de convidados não eram filtrados da lista de destinos de nível superior quando o recurso PdfOopif estava desativado. O filtro foi expandido para incluir o prefixo chrome-extension, que resolve o bug e inclui cobertura para extensões do Chrome MV3 que criam guias (crrev.com/c/6383500, Bug: 396611138).
  • Seleção de destino: correção de uma regressão que fazia com que o comando getWindowHandles() falhasse com um status connection refused ao segmentar apps do Chrome empacotados (crrev.com/c/6317161, Bug: 396622746).

Mudanças e refatorações internas

ChromeDriver 135

Novos recursos

  • BiDi: atualizamos o BiDi Mapper para herdar as permissões do ChromeDriver quando --enable-unsafe-extension-debugging é especificado. Isso permite que os clientes do WebDriver BiDi testem de maneira eficaz extensões que exigem permissões normalmente mantidas pelo cliente do WebDriver (crrev.com/c/6288627, Bug: 393500934).

Correções de bugs

  • Teste: reativamos e atualizamos as expectativas de vários testes do WDSpec que antes estavam marcados como falhando. Isso restaura a cobertura de conformidade de especificação para testes aprovados (crrev.com/c/6310420).

Mudanças e refatorações internas

  • Limpeza: removemos todos os rastros do Lacros (incluindo IS_CHROMEOS_LACROS e dados de teste relacionados) de chrome/test/ porque o Lacros está sendo descontinuado, padronizando o IS_CHROMEOS (crrev.com/c/6284446, Bug: 354842935).
  • Limpeza: removemos todos os rastros do utilitário md5sum após a substituição por devil_util, limpando dependências de build legadas (crrev.com/c/6309939, Bug: 397452007).
  • Padrões C++: removemos o namespace chrome:: de ResultCode e IsNormalResultCode(), movendo-os para o namespace global, e removemos importações obsoletas de inicialização do ChromeOS (crrev.com/c/6196899, Bug: 41050580).
  • Segurança de memória: simplificamos uma chamada std::lower_bound no ChromeDriver usando std::ranges::lower_bound (crrev.com/c/6223172, Bug: 392116519). Suprimidos avisos de unsafe_libc_call para arquivos não compatíveis identificados inicialmente em preparação para a aplicação futura (crrev.com/c/6187925, Bug: 390223051). Marcou o valor de retorno de std::to_array como constexpr para melhorar a segurança e a avaliação no momento da compilação (crrev.com/c/6298909).

ChromeDriver 134

Novos recursos

  • Mitigações de rastreio por redirecionamento (DIPS): suporte do ChromeDriver para mitigações de rastreio por redirecionamento, usando o comando RunBounceTrackingMitigations. O teste de integração foi reestruturado para usar páginas distintas, garantindo que os rejeitos com estado sejam registrados corretamente antes da execução do comando. Esse recurso é compatível com a especificação nav-tracking-mitigations e é implementado em //chrome (crrev.com/c/4935955, Bug: 1474656). Observação: adicionado originalmente em crrev.com/c/4873672 e revertido depois.
  • BiDi: o ChromeDriver foi atualizado para usar propriedades de extensão BiDi padrão do WebDriver com o prefixo goog:, alinhando-se às mudanças chromium-bidi upstream. A propriedade legada channel não é mais permitida (crrev.com/c/6179410).
  • Windows: adicionamos um recurso de versão ao binário chromedriver.exe no Windows (crrev.com/c/6114586, Bug: 385300323).

Correções de bugs

  • MPArch/Targets: correção de uma regressão em que os destinos da extensão do Chrome (chrome-extension://) eram descobertos e anexados incorretamente durante a determinação do destino principal no ChromeOS, o que causava falha em comandos subsequentes (como navegação). Agora, os destinos de extensão são ignorados corretamente durante essa fase inicial (crrev.com/c/6183202, Bug: 385241097).
  • MPArch/Targets: corrigimos outra regressão em que os destinos de guias para background_pages de extensão não eram filtrados corretamente das visualizações da Web de nível superior quando o suporte a destinos de extensão estava desativado (crrev.com/c/6160774, Bug: 385731198).
  • MPArch/Navegação: correção de um problema em que uma guia podia ficar sem uma página ativa anexada durante uma ativação do MPArch, fazendo com que o ChromeDriver a visse incorretamente como um estado de erro. Agora o ChromeDriver espera que a guia adquira uma nova página e conclua a navegação antes de resolver o estado (crrev.com/c/6177606).
  • Processamento de registros: correção de uma falha (erro DCHECK em base::Value()) causada pelo truncamento inadequado de strings de registro que contêm caracteres multibyte. A lógica foi atualizada para usar a detecção de limites UnicodeString em vez de verificações simples de comprimento std::string, garantindo pontos de código válidos (crrev.com/c/6210809, Bug: 367752739).
  • Teste: migramos a maioria dos WPTs relacionados à pré-renderização (exceto alguns com problemas conhecidos de API) de content_shell para headless_shell, já que a refatoração recente do MPArch permite que o ChromeDriver os execute corretamente (crrev.com/c/6168830, Bug: 42323502, Bug: 366257368).

Mudanças e refatorações internas

ChromeDriver 133

Novos recursos

  • Arquitetura: refatoração do ChromeDriver para oferecer suporte à arquitetura de várias páginas (MPArch) e destinos de guias. O WebViewImpl agora se conecta a destinos de guias via AutoAttach. Os comandos que antes tinham uma página agora procuram a página ativa em uma guia. Essa mudança permite inspecionar páginas em segundo plano de extensões, que agora podem ser segmentadas pela capacidade enable_extension_targets. Por padrão, os destinos de extensão são ignorados (crrev.com/c/5961156, Bug: 379767670, Bug: 42323502). Correção de uma regressão em que as páginas de URL chrome-extension:// eram incluídas incorretamente como destinos de extensão. A seleção foi revertida para apenas type=background_page (crrev.com/c/6093588, Bug: 383141569). Movemos enableExtensionTargets para as opções do Chrome em vez de uma capacidade de nível superior (crrev.com/c/6093032).
  • Clássico: suporte restabelecido para referências de elementos de várias chaves. Esse recurso não documentado, geralmente usado para criar referências compatíveis com os modos W3C e não W3C, agora é oficialmente compatível e coberto por testes de integração (crrev.com/c/6063257, Bug: 379584343).

Correções de bugs

  • Estabilidade: impedimos que o ChromeDriver bloqueasse indefinidamente ao processar o comando browsingContext.close. Ao usar um mecanismo diferente para determinar se o navegador precisa ser fechado, o ChromeDriver agora pode processar corretamente os comandos beforeunload sem travamentos (crrev.com/c/6080431, Bug: 42323838, Bug: 379049702).
  • Navegação: correção de um bug em que uma página fictícia com o URL about:blank?test causava uma paralisação. A heurística destinada a identificar uma nova janela sem resposta (baseURL==about:blank e documentURL!=about:blank) agora processa corretamente esses URLs de string de consulta como um caso especial (crrev.com/c/6038039, Bug: 377410086).
  • Navegação: adicionamos lógica para repetir comandos que falham com um erro AbortedByNavigation. Agora, o ChromeDriver vai tentar executar o comando várias vezes antes de desistir com um erro Timeout padrão (crrev.com/c/6012427, Bug: 42323825).
  • Diagnóstico: encaminhamos o erro kTargetCrashed diretamente por NavigationTracker. Se um destino falhar durante a detecção de navegação, esse erro específico agora será mostrado ao usuário em vez de um tempo limite genérico, melhorando os diagnósticos (crrev.com/c/6032612, Bug: 377410086).
  • Android: correções de pesquisas de destino de guias em chrome_android_impl.cc (crrev.com/c/6110492, Bug: 384781876).
  • Teste: corrigimos a inconsistência em vários testes de dimensionamento de janela no win11-arm64 (por exemplo, clicar em elementos ocultos). Agora, os testes consultam o tamanho da janela interna repetidamente após uma operação de redimensionamento até que ela registre corretamente uma altura positiva, considerando as repinturas lentas da janela (crrev.com/c/6012658, Bug: 378470046).
  • Teste: corrigimos várias falhas em testes de integração mapeando erros genéricos de conexão Python para WebSocketConnectionClosedException, simplificando o tratamento de erros (crrev.com/c/6054134), evitando condições de disputa usando SendCommand em vez de PostCommand quando efeitos colaterais imediatos são esperados (crrev.com/c/6054137) e substituindo a dependência de efeitos imediatos de ExecuteScript por mecanismos de detecção de navegação mais confiáveis (crrev.com/c/6063040, Bug: 42323825).
  • Teste: revertemos a remoção da flag de recurso FedCmIdpSigninStatus, já que ela causou falhas (crrev.com/c/6082405, revertendo crrev.com/c/6078693, Bug: 384866916, Bug: 381211734).
  • Ferramentas: adicionamos suporte ao comando Print no script log_replay (crrev.com/c/6010809, Bug: 378451938).

Mudanças e refatorações internas

  • Padrões C++: removemos o histograma Mojo.InvalidUTF8String, permitindo a limpeza de cabeçalhos públicos do Mojo e as subsequentes cascatas do IWYU (crrev.com/c/6133861, Bug: 40509710, Bug: 386793084).
  • Padrões de C++: evitamos alocações em WaitableEvent::Wait() ao mudar de std::list para base::circular_deque (crrev.com/c/6097198).
  • Padrões C++: construtores e destruidores vazios definidos pelo usuário padrão em toda a base de código chrome/ sempre que possível (crrev.com/c/6101911, crrev.com/c/6056220, Bug: 381119547).
  • Segurança de memória (spanificação): migração de matrizes no estilo C para std::array em chrome/ como parte do esforço mais amplo para resolver avisos -Wunsafe-buffer-usage (crrev.com/c/6043879, Bug: 378069401). Uso estrito de size_t em funções de extensão (crrev.com/c/6026238, crrev.com/c/6020621).
  • Teste: o {ref,crash}tests de tela cheia foi enviado de volta para wpt_internal/, já que agora o testdriver é compatível com eles (crrev.com/c/6088404).
  • Teste: corrigimos wptrunner para iOS para localizar corretamente o wrapper do ChromeDriver ao usar diretórios de saída não padrão (por exemplo, //out/*-ios-wpt-fyi-rel/) ao conectar --build-directory corretamente (crrev.com/c/6014940, Bug: 374199289, Bug: 355218109).
  • Teste: adicionamos o teste de integração testBrowserCrashWhileWaitingForEvents para demonstrar casos de regressão em que erros fatais passam despercebidos pelos clientes (crrev.com/c/6025145, Bug: 379049702).
  • Teste: suprimimos WPTs específicos que falham quando executados em headless_shell combinados com o ChromeDriver para estabilizar os builders (crrev.com/c/6032163, Bug: 377410086).

ChromeDriver 132

Novos recursos

  • Teste: adicionamos suporte aos parâmetros de linha de comando repeat e retry-limit aos testes de integração do ChromeDriver, mapeando-os para os argumentos padrão isolated-script-test-repeat e isolated-script-test-launcher-retry-limit (crrev.com/c/5938195, Bug: 374681919). Para testes executados localmente (não CI), o retry-limit padrão foi mudado para 0 (crrev.com/c/5953326, Bug: 374681919).
  • WebSockets: implementamos WebSocketConnection e classes relacionadas em EmbeddedTestServer, permitindo que testes relacionados a WebSocket migrem do SpawnedTestServer. Isso inclui o enquadramento de acordo com o protocolo e o registro simplificado do gerenciador (crrev.com/c/5849732, Bug: 40812029).

Correções de bugs

  • Estabilidade: corrigimos uma falha do ChromeDriver que podia ocorrer se um comando de clique fizesse o navegador fechar. Para isso, processamos corretamente o estado de erro kTargetDetached introduzido em refatorações anteriores (crrev.com/c/5934524, Bug: 42323264).
  • Estabilidade: foi corrigida uma falha intermitente no teste de integração testClickNavigateRemoteToLocal no Mac ARM64 ao resolver uma disputa (crrev.com/c/5975526, Bug: 375971185).
  • Navegação: corrigimos os comandos GoBack e GoForward, que falhavam se Page.getNavigationHistory fosse chamado enquanto o documento estava saindo de um estado ativo (indicando uma navegação em andamento). Agora o ChromeDriver tenta novamente o comando corretamente nesse cenário (crrev.com/c/6011739, Bug: 378433873).
  • Execução de script: garantimos que scripts que acionam uma navegação ou fecham uma janela retornem corretamente um erro padrão ScriptTimeout se o lado do navegador não garantir um resultado, pedindo ao usuário para evitar estruturas de teste ambíguas (crrev.com/c/5934265, Bug: 372883701).
  • Execução de script: foi corrigido um problema em que a funcionalidade de repetição de registros falhava com um erro de "resposta de comando inesperada" (crrev.com/c/5961142, Bug: 42323342).
  • Códigos de erro: corrigimos o tratamento de erros do ChromeDriver para não encapsular mais todas as exceções com uma propriedade "code" em um "erro de JavaScript" genérico. Isso garante que erros padrão, como "referência de elemento desatualizado" (de call_function.js) e "estado de elemento inválido" (da função CLEAR do Selenium Atoms), sejam propagados com precisão para o usuário (crrev.com/c/5937893, Bug: 42323409). Melhoria no tratamento de erros em GetElementTagName para interpretar corretamente as informações ausentes do nome da tag como "o objeto não é um elemento" (crrev.com/c/5929087).
  • BiDi: correção de um problema que impedia a inicialização de sessões BiDi quando um perfil de usuário personalizado era usado. A página carregada do perfil personalizado pode impedir que o BiDiMapper seja iniciado. Agora, o ChromeDriver garante que a primeira guia sempre carregue data:, para fornecer um início limpo para o mapper (crrev.com/c/5960656, Bug: 366886096).
  • Modo de navegação anônima: corrigimos um bug que impedia o ChromeDriver de criar novas guias ao operar no modo de navegação anônima (crrev.com/c/5952980, Bug: 42323352).
  • Teste: correção da instabilidade no teste de integração testScriptNavigateRemoteToLocal (que estava falhando em uma taxa de 8,33%) e adição de testes de integração em C++ para reproduzir e verificar a correção da condição de disputa (crrev.com/c/6010867, Bug: 378387680).
  • Teste: reativamos vários testes de integração instáveis no Mac (testWindowMinimize) e no Windows (ChromeDownloadDirTest.testFileDownloadAfterTab, InvalidCertificateTest.*), além de testes globais (testShadowDomFindElement, testes de captura de tela de elementos). Movemos temporariamente os testes instáveis do css/css-scrollbars/ WPT de volta do shell sem interface gráfica para o shell de conteúdo (crrev.com/c/5953708, crrev.com/c/5948803, crrev.com/c/5941351, crrev.com/c/5941098, crrev.com/c/5959254, Bug: 42323825, Bug: 40848017, Bug: 40736504, Bug: 40176424, Bug: 40927590).

Mudanças e refatorações internas

  • BiDi: aumentamos a dependência do mapeador chromium-bidi para incorporar as correções upstream e atualizações de protocolo mais recentes (crrev.com/c/5953339, crrev.com/c/5865478, Bug: 4226). Observação: um aumento do mapeador foi brevemente revertido devido a falhas do WPT e, posteriormente, reativado (crrev.com/c/5961113).
  • Arquitetura: minimizamos o uso do objeto de sessão local da linha de execução no ChromeDriver para evitar bugs de compartilhamento de estado entre testes e simplificar o processamento explícito de sessões (crrev.com/c/5978486, Bug: 42323555). Refatoração dos testes de integração em C++ para usar um fixture de teste compartilhado (crrev.com/c/5971474, Bug: 42323555).
  • Revisão dos dados: removemos soluções alternativas descontinuadas específicas do modo "headless antigo", já que o código chrome-headless-shell legado não está mais presente no Chrome (crrev.com/c/5961602, Bug: 42323387).
  • Limpeza: removemos o arquivo java_tests.txt não usado, um remanescente dos testes de aceitação do ChromeDriver removidos anteriormente (crrev.com/c/5970994, Bug: 357737793).
  • Teste: adicionamos um teste de integração em C++ para verificar se o ChromeDriver não cria sessões paralelas por engano com o mesmo user-data-dir ou vaza URLs entre sessões, o que pode causar instabilidade (crrev.com/c/5961137, Bug: 375312517).
  • Teste: garantimos que as instâncias temporárias do ChromeDriver criadas por testes de integração sejam desligadas o mais rápido possível para liberar recursos (crrev.com/c/5997970, Bug: 375974725).

ChromeDriver 131

Novos recursos

Correções de bugs

Mudanças e refatorações internas

  • Segurança de memória (spanificação): substituímos o uso de ponteiros não seguros por base::span em net::HttpUtil (crrev.com/c/5854420) e migramos base::File::WriteAtCurrentPos() para o equivalente baseado em intervalo (crrev.com/c/5818972). Reescrevemos os valores de ponteiro do mapa (por exemplo, em std::map, std::unordered_map) para raw_ptr (crrev.com/c/5867189, Bug: 329428315).
  • Padrões C++: substituímos as macros de atributo Abseil (ABSL_ATTRIBUTE_*) por macros base/ padrão (crrev.com/c/5852373). Evitamos cópias não intencionais substituindo strings/vetores de passagem por valor por std::string_view ou referências constantes quando apropriado e removemos qualificadores const soltos de argumentos std::string_view (crrev.com/c/5914620, crrev.com/c/5906184, Bug: 369952985).
  • Infraestrutura: configuramos o Fuchsia para usar o ChromeDriver e controlar web-engine (crrev.com/c/5867896, Bug: 40935291).
  • Teste: migramos um teste do WebAuthn de frames isolados do executor de shell de conteúdo legado para o Chrome sem interface gráfica com o ChromeDriver. Isso porque o executor legado vai perder o suporte à API testdriver do WebAuthn em breve (crrev.com/c/5920770, Bug: 372169469).

ChromeDriver 130

Novos recursos

Mudanças e refatorações internas

  • Padrões C++: resolvemos problemas de "regra de cinco" em várias classes. Como o plug-in de estilo do Chrome insiste em destruidores fora da linha sem também impor construtores de movimentação fora da linha, o compilador estava excluindo implicitamente os operadores de movimentação e voltando silenciosamente para cópias. Essas declarações ausentes foram adicionadas (crrev.com/c/5846757, Bug: 364788123).
  • Teste: limpamos o resumo dos resultados do teste wptrunner substituindo a string chrome codificada pelo produto real usado e ocultando o artefato command detalhado da saída do resumo (crrev.com/c/5825633, Bug: 41494889).
  • Teste: corrigimos falhas de teste em massa nos testes de integração do ChromeDriver no macOS 15 (Mac15) ao dobrar tempos limite específicos, já que os testes nesse SO exigiam muito mais tempo do que no Mac14. Quatro testes de sensor virtual também foram adicionados à lista de ignorados devido à instabilidade (crrev.com/c/5817455, Bug: 354939744).
  • Teste: desativamos o teste ChromeDriverSiteIsolation.testClickNavigateLocalToLocal instável no Mac (crrev.com/c/5806894, Bug: 361521805) e os testes ChromeDriverTest.testClickElement*ObscuredByScrollBar instáveis no Windows 11 (crrev.com/c/5804083, Bug: 360058651).
  • Teste: removemos os testes de aceitação do ChromeDriver (que faziam o download de versões mais antigas do Chrome para testar com o ChromeDriver atual) devido a vários problemas de infraestrutura. Eles podem ser adicionados novamente mais tarde na CI com autoroll (crrev.com/c/5812142, Bug: 357737793).

ChromeDriver 129

Novos recursos

  • BiDi: atualizamos o auxiliar de inicialização da sessão do ChromeDriver para enviar um comando session.new ao BiDi Mapper, permitindo que ele processe recursos diretamente. Esta é a primeira etapa para remover MapperOptions (crrev.com/c/5741432, Bug: 356371297). Observação: uma mudança relacionada crrev.com/c/5754093 que fornecia o unhandledPromptBehavior processado foi revertida crrev.com/c/5755744 devido a uma queda na cobertura de testes.
  • Compute Pressure: adicionamos novos comandos de extensão para gerenciamento de origem de pressão virtual, implementando a seção "Automação" da especificação Compute Pressure. Esses comandos são analisados e encaminhados para a camada do CDP (crrev.com/c/5666583, Bug: 347031400).
  • Extensões MV2: testes atualizados que exercem o comportamento do MV2 para usar o ScopedTestMV2Enabler como parte do teste de campo contínuo de descontinuação do Manifest V2 (crrev.com/c/5685054, Bug: 339061151).

Correções de bugs

  • Serialização clássica: rastreamento de objetos vistos ao serializar um Set nos resultados da execução do script do WebDriver Classic, evitando loops infinitos e tolerando substituições de Array.prototype.includes (crrev.com/c/5765833, Bug: 357472850). (Observação: isso foi revertido posteriormente crrev.com/c/5773175 devido a uma regressão do WPT).

Mudanças e refatorações internas

ChromeDriver 128

Novos recursos

  • Capacidades: permitiu o uso de um dicionário para a capacidade unhandledPromptBehavior, alinhando-se às estruturas de capacidade padrão, embora ainda não seja totalmente respeitado pelo Mapper (crrev.com/c/5692204, crrev.com/c/5682934, Bug: 42323841).
  • Inicialização: adicionamos o argumento de linha de comando --ignore-explicit-port ao ChromeDriver. Essa solução alternativa temporária força o ChromeDriver a ignorar qualquer porta fornecida explicitamente e, em vez disso, encontrar e vincular a uma porta livre, resolvendo disputas de porta TCP durante a execução do teste da plataforma da Web. A intenção é remover essa solução após o M132 (crrev.com/c/5724574, crrev.com/c/5703976, Bug: 42323836).

Correções de bugs

  • Sensores: corrigimos o comando ExecuteUpdateVirtualSensor para usar SendCommand() em vez de SendCommandAndGetResult(), já que o comando setSensorOverrideReadings CDP não retorna um valor (crrev.com/c/5703589).
  • FedCM: foi corrigida uma condição de disputa nos testes do ChromeDriver do FedCM. Agora, não é mais necessário afirmar que NoSuchDialog é retornado quando uma caixa de diálogo é esperada, evitando falhas se ela aparecer muito rápido (crrev.com/c/5713515, Bug: 346530330).
  • Teste: reativamos os testes do autenticador virtual WebAuthn no Mac depois que o problema subjacente (crbug.com/40233722) foi corrigido (crrev.com/c/5635806, Bug: 329130177).
  • Mensagens de erro: foi corrigido um erro de digitação na mensagem de erro do comando execute/async (crrev.com/c/5697913).

Mudanças e refatorações internas

ChromeDriver 127

Correções de bugs

  • Estabilidade: correção de uma falha do ChromeDriver que ocorria quando um comando target.detachFromTarget (ou evento target.detachedFromTarget) era recebido enquanto o cliente do DevTools processava ativamente outros comandos, evitando o lançamento prematuro dos objetos WebView e DevToolsClient (crrev.com/c/5527584, Bug: 339773537).
  • Estabilidade: corrigimos um problema em que o comando Switch To Window podia retornar incorretamente um "erro desconhecido" se uma visualização da Web fosse separada durante a execução do comando. Agora, ele ignora corretamente o erro interno "visualização da Web não encontrada", resultando em uma resposta padrão "não há essa janela" se a janela de destino for fechada (crrev.com/c/5583730, Bug: 338616700).
  • Estabilidade: o ChromeDriver agora tolera o desvinculamento do destino ao atualizar a lista interna do WebView. Se um destino for desconectado durante a atualização, o ChromeDriver vai tentar novamente em vez de retornar um erro não padrão, reduzindo a instabilidade em ambientes em que as janelas são criadas e destruídas rapidamente (crrev.com/c/5565103, Bug: 338616700, Bug: 4771).
  • Navegação: adicionamos lógica ao ChromeDriver para aguardar uma navegação detectada pela extremidade remota ao pesquisar elementos. Isso evita que o ChromeDriver retorne um erro padrão ou falhe com um DCHECK quando uma navegação coincide com uma operação de localização de elementos (crrev.com/c/5563113, revertendo crrev.com/c/5563420, relançando crrev.com/c/5562089, Bug: 4771).
  • BiDi: corrigimos uma disputa entre o ChromeDriver e o BiDiMapper durante a criação da sessão. Agora, o ChromeDriver aguarda o comando browsingContext.getTree retornar uma lista não vazia antes de concluir o comando NewSession, garantindo que a nova guia padrão criada seja registrada corretamente (crrev.com/c/5575497, Bug: 341048786, Bug: 1503101).
  • BiDi: foi corrigido um problema em que o foco permanecia na guia em segundo plano do BiDiMapper após a criação da sessão, em vez da guia do usuário ativa, concedendo explicitamente o foco à primeira guia do usuário (crrev.com/c/5594070, Bug: 341048786, Bug: 1503101).
  • BiDi: impedimos que o ChromeDriver tentasse anexar um destino ao processar comandos BiDi (como browsingContext.close) para evitar que os comandos CDP ficassem parados indefinidamente se um prompt do usuário estivesse aberto, delegando o processamento totalmente à camada BiDi já conectada (crrev.com/c/5541915, revertendo crrev.com/c/5539818, relançando crrev.com/c/5522393, Bug: 4758).
  • FedCM: corrigimos a falha no teste fedcm-loginhint.https.html WPT em que uma caixa de diálogo era marcada incorretamente como fechada. Agora, o estado só é atualizado se a operação selectAccount for concluída (crrev.com/c/5398379, Bug: 331237776).
  • Teste: corrigimos uma falha do DCHECK durante a análise JSON quando um caractere atingia exatamente o limite kExtendedASCIIStart (crrev.com/c/5565276, Bug: 40284755).
  • Teste: corrigimos o teste scrollend-event-fires-to-iframe-window.html WPT usando o elemento iframe como a origem da rolagem e arredondando as entradas de movimento do ponteiro para números inteiros, evitando erros do ChromeDriver com posições de toque fracionárias (crrev.com/c/5570150, Bug: 340956654).
  • Teste: melhoria dos diagnósticos em testes de integração do ChromeDriver ao imprimir os caminhos tentados quando run_py_tests.py não consegue localizar o binário do navegador (crrev.com/c/5604204, Bug: 4781).

Mudanças e refatorações internas

ChromeDriver 126

Novos recursos

  • BiDi: o ChromeDriver foi atualizado para fornecer a chave --disable-background-timer-throttling ao iniciar o navegador para uma sessão do WebDriver BiDi, evitando que as guias em segundo plano sejam limitadas (crrev.com/c/5515013, Bug: 4762).
  • BiDi: foi adicionado suporte ao BiDi Mapper para enviar mensagens de depuração (sendDebugMessage) quando o registro detalhado é necessário. O ChromeDriver marca esses eventos como bidi messages para análise, embora o BidiTracker os ignore no momento (crrev.com/c/5465782, Bug: 4753).
  • Clássico: implementamos a aceitação automática de todas as caixas de diálogo beforeunload (alertas), seguindo o padrão do WebDriver, que determina que elas nunca devem ser mostradas em uma sessão clássica (crrev.com/c/5517510, Bug: 4757).

Correções de bugs

  • Clássico: removemos a limitação redundante de tentativas máximas na lógica de recuperação de elementos. Agora, a recuperação é limitada apenas pelo tempo limite implícito, evitando cenários em que a operação pode falhar prematuramente e retornar incorretamente um erro NoSuchExecutionContext não padrão (crrev.com/c/5478668, Bug: 4379).
  • Clássico: corrigimos uma regressão que fazia com que o ChromeDriver respondesse com um javascript error em vez de um erro invalid selector quando uma solicitação de recuperação usava uma estratégia de local inválida (crrev.com/c/5490662, Bug: 4743).
  • Clássico: os comandos de janela no Android (maximizar, minimizar, tela cheia) agora retornam o erro unsupported operation padrão em vez de continuar, já que essas ações estão indisponíveis no navegador Android (crrev.com/c/5490224, Bug: 4689).
  • Clássico: o ChromeDriver foi corrigido para nunca retornar o código de erro interno kChromeNotReachable. Agora, ele retorna corretamente o erro padrão kSessionNotCreated quando o cliente HTTP não consegue se conectar ao navegador (crrev.com/c/5476390, Bug: 4379).
  • Clássico: corrigimos o ChromeDriver para nunca retornar o erro kNoSuchExecutionContext não padrão ao executar comandos de janela (crrev.com/c/5483606, Bug: 4379).
  • Clássico: removemos o código de erro kForbidden não usado e sem suporte da lista de códigos de erro compatíveis (crrev.com/c/5476927, Bug: 4379).
  • BiDi: o ChromeDriver foi atualizado para pedir que o usuário confirme antes de fechar a guia dedicada do Mapper, alinhando-se às mudanças chromium-bidi upstream (crrev.com/c/5508600, Bug: 4761).

Mudanças e refatorações internas

ChromeDriver 125

Novos recursos

  • Postura do dispositivo: adicionamos comandos do ChromeDriver para gerenciamento da postura do dispositivo, com suporte à seção "Automação" da especificação de postura do dispositivo. Isso permite substituir a postura do dispositivo definida pelo hardware e remover a substituição usando comandos de extensão (crrev.com/c/5437993, Bug: 330376761).

Correções de bugs

  • BiDi: mudamos o armazenamento intermediário do comando BiDi id de um Double para base::Value. Isso garante que o id seja repetido com precisão na resposta, sem um ponto decimal ou uma parte fracionária inesperada após a serialização JSON (crrev.com/c/5444225, Bug: 4676).
  • FedCM: reenvio da mudança para ativar o CORS no endpoint de declaração de ID depois que os IDPs estiverem prontos (crrev.com/c/5440132, revertendo crrev.com/c/5381316, reenviando crrev.com/c/5370086, Bug: 40284123).
  • FedCM: corrigimos um bug em que uma caixa de diálogo era marcada incorretamente como fechada. Para isso, garantimos que ela só seja marcada como fechada se o comando selectAccount for concluído. Isso resolve falhas de teste quando selectAccount é chamado sem um seletor de contas esperado (crrev.com/c/5398379, Bug: 331237776). Evitamos chamar fedcm_get_and_select_first_account quando não se espera um seletor de contas para evitar o acionamento desse bug (crrev.com/c/5398800).
  • Teste: foi corrigida uma falha no teste popover-light-dismiss.html WPT combinando sequências de ações e usando o documento do frame principal como a origem da ação pointerUp, impedindo que o ChromeDriver envie incorretamente eventos pointerUp simultâneos entre frames (crrev.com/c/5402096, Bug: 325981758).
  • Teste: correção do wptrunner para encaminhar corretamente a saída stderr (incluindo os registros do navegador gravados ao usar --enable-chrome-logs) para o artefato stderr em vez de crash_log, e movimentação dos erros de plataforma (que contêm o stack trace do navegador) para crash_log (crrev.com/c/5437023, Bug: 41494889).
  • Teste: corrigimos wptrunner para encaminhar os registros do navegador ao artefato de teste correto, agrupando a saída pelo processo do ChromeDriver. Isso evita registros intercalados e órfãos durante a execução do teste em paralelo (crrev.com/c/5320681, Bug: 41494889).

Mudanças e refatorações internas

  • BiDi: aumentamos a dependência do BiDi Mapper, integrando os mais recentes aprimoramentos de protocolo e correções de bugs (crrev.com/c/5433300, crrev.com/c/5393442, Bug: 4226). Observação: um aumento anterior crrev.com/c/5374366 foi revertido crrev.com/c/5374839 e, posteriormente, reapareceu com testes instáveis desativados e licenças atualizadas crrev.com/c/5374914.
  • Diagnóstico: integrou o StackTrace do Chrome às exceções do ChromeDriver. Isso mostra o rastreamento de pilha do navegador na mensagem de erro quando uma sessão é excluída devido a uma falha na página/guia (por exemplo, ponteiros pendentes no Mac), melhorando significativamente a capacidade de depuração (crrev.com/c/5374371, Bug: 330009945).
  • Teste: desativamos temporariamente o teste de integração testTakeLargeElementViewportScreenshot instável no Mac (especificamente mac-arm64) (crrev.com/c/5447515, Bug: 333826980).
  • Teste: atualizamos os argumentos de inicialização do ChromeDriver em ambientes de teste (CEL) para corresponder à sintaxe do Selenium 4+ (crrev.com/c/5448812, Bug: 308885357).
  • Teste: extraímos a linha de comando chrome exata usada para executar cada teste do WPT do registro chromedriver em um artefato do ResultDB chamado command. Isso facilita a depuração manual com run_blink_wptserve.py (crrev.com/c/5441189, Bug: 41494889).
  • Dependências: removemos Closure da lista de dependências selenium-atoms e, consequentemente, dos avisos de terceiros do ChromeDriver (crrev.com/c/5424804, Bug: 4226).
  • Dependências: foram removidas dependências não usadas em dynamic_annotations no repositório base (crrev.com/c/3398908, Bug: 1282422).
  • Formatação: aplicamos a nova configuração clang-format a cabeçalhos problemáticos do Windows (crrev.com/c/5367127, Bug: 329138753).

ChromeDriver 124

Novos recursos

  • BiDi: adicionamos uma etapa de build para minimizar o script BiDiMapper antes de incorporá-lo ao ChromeDriver, já que o mapeador de origem agora é baixado sem minimização do CIPD (crrev.com/c/5310075, Bug: 4226).
  • WebAuthn: adicionamos o comando SetCredentialProperties, permitindo que os clientes atualizem as flags de backup de uma credencial WebAuthn (crrev.com/c/5296389, Bug: 40945430).
  • WebAuthn: expôs flags de backup do WebAuthn pelo WebDriver ao adicionar defaultBackupEligibility e defaultBackupState ao comando "Adicionar autenticador virtual", e backupEligibility e backupState ao comando "Adicionar credencial" (crrev.com/c/5297117, Bug: 40945430).
  • Teste: adicionamos suporte ao argumento de linha de comando --failfast aos testes de integração do ChromeDriver Python, interrompendo a execução do teste no primeiro erro para ajudar na depuração (crrev.com/c/5374546).
  • Teste: adicionamos suporte a content-shell para o comando SetRPHRegistrationMode do webdriver usando as APIs testdriver-vendor.js (crrev.com/c/5205730, Bug: 1359103).

Correções de bugs

  • Estabilidade: movemos a verificação de expiração do tempo limite para dentro do corpo do loop de pesquisa e espera em ChromeImpl::SetWindowBounds. Isso corrige um problema em que, sob carga alta, o tempo limite podia expirar antes da primeira iteração do loop (crrev.com/c/5366899, Bug: 4642).
  • Desempenho: tempo de espera minimizado em ChromeImpl::SetWindowBounds ao aplicar apenas uma espera de backoff exponencial se os limites da janela ainda não tiverem atingido o estado desejado, reduzindo a latência de configuração do WPT (crrev.com/c/5366457, Bug: 4642).
  • Inicialização: o ChromeDriver foi atualizado para usar --user-data-dir em vez de --data-path ao especificar o diretório de dados para content_shell, alinhando-se à forma como ele lê a porta ativa do DevTools (crrev.com/c/5226609, Bug: 1295373).

Mudanças e refatorações internas

  • BiDi: aumentamos a dependência do BiDi Mapper, capturando os recursos e correções de protocolo mais recentes (crrev.com/c/5374366, crrev.com/c/5349491, crrev.com/c/5317650, Bug: 4226). Observação: um aumento foi revertido brevemente e depois reapareceu devido a falhas de teste crrev.com/c/5374839, crrev.com/c/5368680, crrev.com/c/5319423.
  • Substituímos os usos de absl::optional por std::optional em toda a base de código após a transição de absl::optional para um alias de tipo (crrev.com/c/5296147, Bug: 1500249).
  • Cobertura estendida de MiraclePtr (raw_ptr) para outros contêineres padrão, incluindo std::list, std::unordered_set, base::flat_set, std::stack e std::queue (crrev.com/c/5306923, Bug: 325302189).
  • Convertido WriteBigEndian() para usar conversões de bytes base::numerics ou BigEndianWriter (que agora aceita base::span), melhorando a segurança ao gravar bytes big-endian (crrev.com/c/5202348, Bug: 1490484).
  • Mudança para o uso do ChromeDriver para executar testes da plataforma Web (WPT, na sigla em inglês) com content_shell (exceto testes virtuais e reftests pendentes de correções de bugs upstream) (crrev.com/c/5347371, Bug: 40214293).
  • Convertemos todos os testes da Web do Sensor genérico para usar test_driver.js e sensores virtuais em vez de simulações de JS/Mojo, alinhando-nos à nova seção de automação da especificação do Sensor genérico (crrev.com/c/4770867, Bug: 1278377, Bug: 1471996).
  • Melhoramos a geração de licenças adicionando append_notices.py para gerar créditos para dependências BiDiMapper e atualizando a invocação licenses.py para depender estritamente do README selenium-atoms em relação a avisos de terceiros (crrev.com/c/5350601, crrev.com/c/5339957, Bug: 4729, Bug: 4735).

ChromeDriver 123

Novos recursos

  • FedCM: mostra caixas de diálogo modais para fluxos de botão de conta única, incluindo a adição de suporte para visualizações modais na interface de automação (crrev.com/c/5231438, Bug: 1518356).
  • FedCM: implementamos o suporte do ChromeDriver para abrir links em caixas de diálogo do FedCM, tratando-os como botões para simplificar a automação (crrev.com/c/5225543, Bug: 1513520).
  • Sensores: comandos de sensor virtual do WebDriver modificados para ler ângulos de Euler (alfa-beta-gama) em vez de quaternions, obedecendo às atualizações recentes da especificação do sensor de orientação. As camadas internas de CDP e serviços ainda usam quaternions por uma etapa de conversão (crrev.com/c/5229177, Bug: 1506995, Bug: 1520912, Bug: 1520919).

Correções de bugs

  • Clássico: foi corrigido um problema em que retornar um nó de um frame diferente por um script resultava incorretamente em um erro StaleElementReference. Agora, ele retorna corretamente um JavaScriptError para obedecer ao padrão do WebDriver (crrev.com/c/5222746, Bug: 4668).
  • Teste: foi corrigido um teste de eventos de rolagem esticada que estava falhando no Chrome/ChromeDriver porque o arrastar por toque se estendia para fora dos limites da janela. Agora, o arrastar está corretamente restrito (crrev.com/c/5297676, Bug: 40832230).
  • Teste: correção dos testes MIDI open-close.https.html para não criar promessas desnecessariamente, evitando rejeições de promessas não processadas que faziam o ChromeDriver falhar no teste (crrev.com/c/5239869, Bug: 1499775).
  • Teste: corrigimos o conjunto de permissões em testes wpt_internal/system-wake-lock/idlharness* em que test_driver.set_permission(...) estava transmitindo incorretamente false em vez de null ou um WindowProxy, confundindo o ChromeDriver (crrev.com/c/5271087, Bug: 40287920).

Mudanças e refatorações internas

  • BiDi: aumentamos a dependência do BiDi Mapper, buscando as correções e recursos mais recentes (crrev.com/c/5205452, crrev.com/c/5255321, crrev.com/c/5238148, crrev.com/c/5237125, Bug: 4226). Observação: um aumento foi revertido brevemente e depois reaplicado devido a falhas de build crrev.com/c/5238855.
  • Melhoria da integridade do código do ChromeDriver ao eliminar conversões estáticas não seguras de uma classe de base para uma classe derivada em ChromeImpl e DevToolsClientImpl, evitando possíveis comportamentos indefinidos (crrev.com/c/5277062, crrev.com/c/5272562, Bug: 4702).
  • Eliminação de transmissões não seguras em WebViewImpl (crrev.com/c/5272230, Bug: 4702).
  • Removemos formas descontinuadas de base::Base64Encode(), migrando para a variante mais recente std::string, que retorna em vez de usar parâmetros de saída (crrev.com/c/5179900, crrev.com/c/5246585, Bug: 1486214).
  • Atualizamos todas as diretivas #include para base/... para usar "" em vez de <> por consistência (crrev.com/c/5237376, Bug: 1500249).
  • Migração de todos os arquivos DIR_METADATA em chrome/test/ para o Buganizer (crrev.com/c/5284119, Bug: 1518875).
  • Impedimos que o wptrunner criasse um arquivo - local ao transmitir -vvv removendo a chave chromedriver --log-path=- desnecessária, já que stderr é redirecionado para stdout (crrev.com/c/5282721).
  • Melhoramos o wptrunner para resumir os resultados dos testes quando ocorrem regressões, incluindo explicitamente os resultados dos subtestes e os rastreamentos de pilha do ChromeDriver diretamente na saída do resumo (crrev.com/c/5238662, Bug: 1521922).
  • Depuração simplificada de testes de integração do ChromeDriver com a introdução do parâmetro --remote-chromedriver-port em run_py_tests.py, permitindo a conexão com uma instância em execução em um depurador (crrev.com/c/5237254, Bug: 4693).
  • Evitamos chamadas de dois argumentos base::HexEncode() e RandBytes() para permitir que o compilador deduzisse o tamanho correto, simplificando o código (crrev.com/c/5241357).

ChromeDriver 122

Correções de bugs

  • BiDi: atualização da serialização de nós profundos para incluir loaderId, permitindo que o ChromeDriver e o BiDi Mapper referenciem e desreferenciem nós corretamente sem viagens de ida e volta excessivas (crrev.com/c/5116240, Bug: 1420968).
  • Recursos: o ChromeDriver foi atualizado para transmitir o recurso acceptInsecureCerts ao BiDi Mapper imediatamente na inicialização, evitando condições de corrida em que o recurso pode ser aplicado tarde demais (crrev.com/c/5125711, Bug: 4643).
  • Clássico: reestruturação da geração de referências de elementos para usar um formato <frame_id>.<loader_id>.<backend_node_id>. Isso permite que o ChromeDriver distinga definitivamente entre referências de elementos válidas, desconhecidas e desatualizadas em navegações de frames e atualizações do DOM (crrev.com/c/5094519, Bug: 4379).
  • Clássico: corrigido um problema em que o comando window/handles podia falhar com um erro "no such window" se um destino recém-criado se fechasse (por exemplo, em uma disputa) antes que o ChromeDriver pudesse se conectar a ele (crrev.com/c/5147409, Bug: 1506833).
  • FedCM: adicionamos um listener de eventos interno para notificar quando uma caixa de diálogo do FedCM é fechada, evitando que o comando dialogtype retorne dados desatualizados se a caixa de diálogo for fechada externamente (por exemplo, via AbortController.abort) (crrev.com/c/5067504, Bug: 1506292).
  • FedCM: removemos o prefixo do fornecedor do comando ClickDialogButton porque ele foi aprovado na especificação do FedCM (crrev.com/c/5092527, Bug: 1499341).

Mudanças e refatorações internas

  • BiDi: atualizamos a dependência do BiDi Mapper para a versão mais recente (crrev.com/c/5205452, Bug: 4226).
  • Reduzimos o tráfego do ChromeDriver e do protocolo Chrome DevTools (CDP) removendo chamadas Page.enable redundantes enviadas de cada DevToolsEventListener, já que DevToolsClientImpl já processa isso por destino (crrev.com/c/5088789, Bug: 4600).
  • Mudamos todos os builders do Wptrunner para content_shell para o status experimental, já que a execução de testes no modo de protocolo não é totalmente compatível enquanto a integração do ChromeDriver está em andamento (crrev.com/c/5225148, Bug: 1474702).
  • Os testes que exigem window.test_driver_internal.get_computed_role em content_shell foram ignorados porque ainda não foram implementados, evitando falhas de TypeError (crrev.com/c/5189678, Bug: 1517744).
  • Refatoração para usar flags IS_OZONE_{X11, WAYLAND} independentes de plataforma em vez de OZONE_PLATFORM_* (crrev.com/c/5086329, Bug: 1500494).
  • Aumentamos a dependência selenium-atoms para a revisão mais recente (crrev.com/c/5110808, Bug: 4662).
  • Lógica corrigida nos testes do SnapEvents quando executados no binário completo do Chrome, arredondando as entradas de movimento do ponteiro, aplicando o parâmetro origin para rolagem e usando declarações de aproximação (assert_approx_equals) para lidar com discrepâncias fracionárias de rolagem/deslocamento (crrev.com/c/5097343).
  • Adição do auxiliar StringPrintfNonConstexpr() para distinguir de StringPrintf() quando as strings de formato não são constantes de tempo de compilação (crrev.com/c/4950568, Bug: 1371963).
  • Garantia de que o escape de macro rust chromium::import! usa uma função injetiva para evitar colisões em nomes de destino GN gerados (crrev.com/c/5132119, Bug: 1512174).
  • Limpeza da implementação do ScopedTempDirWithRetry ao adicionar um construtor e retornos antecipados no destruidor (crrev.com/c/5113843).

ChromeDriver 121

Novos recursos

  • Teste: adicionamos suporte para executar testes integrados do ChromeDriver (chromedriver_py_test) no chrome-headless-shell, além do navegador Chrome padrão em bots de build. Isso inclui a capacidade de descobrir o binário do navegador com base no parâmetro --browser-name e executar condicionalmente conjuntos de testes específicos (crrev.com/c/4995189, crrev.com/c/4989442, Bug: 4358).

Correções de bugs

  • Estabilidade: inicializamos o KeyboardLayoutEngine padrão como StubKeyboardLayoutEngine para evitar falhas do ChromeDriver causadas por um hit DCHECK em KeyboardLayoutEngineManager::SetKeyboardLayoutEngine (crrev.com/c/5017859, Bug: 4625).
  • Estabilidade: foi corrigido um problema de instabilidade em que o ChromeDriver podia falhar se a linha de execução da sessão solicitasse o fechamento de uma conexão depois que o cliente já tivesse solicitado o fechamento da mesma conexão (crrev.com/c/4994636, Bug: 4606).
  • Gerenciamento de recursos: foi corrigido o vazamento de recursos nos testes de integração do ChromeDriver (RemoteBrowserTest) ao garantir que o processo do navegador seja encerrado mesmo que um comando do ChromeDriver gere uma exceção (crrev.com/c/5009554, Bug: 4614).
  • Gerenciamento de recursos: lógica implementada nos testes de integração do ChromeDriver para detectar e encerrar processos do navegador abandonados pelo processo do ChromeDriver (crrev.com/c/5014093, Bug: 4617).
  • Inicialização: corrigimos um problema em que chrome-headless-shell retornava uma lista de destinos vazia, impedindo a criação da sessão, ao anexar o argumento data:, à linha de comando do navegador quando o nome dele era chrome-headless-shell (crrev.com/c/5010392, crrev.com/c/5009535, Bug: 4615, Bug: 4358).
  • FedCM: adicionamos um novo evento para notificar quando uma caixa de diálogo do FedCM é fechada, garantindo que dialogtype e outros comandos não retornem dados desatualizados se a caixa de diálogo for fechada externamente (por exemplo, via AbortController.abort) (crrev.com/c/5067504, Bug: 1506292).
  • Testes: corrigimos e reativamos todos os testes de integração do ChromeDriver que estavam desativados para chrome-headless-shell no Windows (crrev.com/c/5027594, Bug: 4358).
  • Teste: enfraquecemos asserções excessivamente estritas em testElementRegionTest para alinhar com o padrão do WebDriver, resolvendo a instabilidade causada por peculiaridades de renderização do navegador (crrev.com/c/5017865, Bug: 4526).

Mudanças e refatorações internas

ChromeDriver 120

Novos recursos

  • BiDi: adicionamos suporte aos comandos session.new e session.end, permitindo que os usuários criem e encerrem sessões diretamente com comandos BiDi (crrev.com/c/4941941, Bug: 4496).
  • BiDi: adicionamos suporte ao comando session.status PureBiDi, permitindo que os usuários estabeleçam uma conexão WebSocket não vinculada a nenhuma sessão e recuperem o status da sessão (crrev.com/c/4938596, Bug: 4496). (Relançado após uma reversão anterior em crrev.com/c/4922097)
  • BiDi: aumentamos a dependência do BiDi Mapper e alinhamos com o novo processo simplificado de execução do Mapper (crrev.com/c/4952609, Bug: 4226).
  • Sensores: implementamos comandos de sensores virtuais em browser_protocol.pdl e na camada CDP (domínio de emulação), adicionando suporte à seção de automação da especificação de sensor genérico (crrev.com/c/4770864, Bug: 1278377).
  • Sensores: adicionamos comandos de extensão do ChromeDriver para gerenciamento de sensores virtuais, traduzindo parâmetros do WebDriver em novas chamadas do CDP (crrev.com/c/4770866, Bug: 1278377).
  • Sensores: adicionamos um caminho de código content_shell para manipulação de sensores virtuais via testdriver.js, ignorando completamente o ChromeDriver para testes da Web (crrev.com/c/4770865, Bug: 1278377).
  • Mitigações de rastreamento: adicionamos suporte do ChromeDriver para mitigações de rastreamento por redirecionamento (DIPS), permitindo a automação da especificação nav-tracking-mitigations (crrev.com/c/4873672, Bug: 1474656). (Observação: isso foi revertido temporariamente devido a falhas de teste no Mac em crrev.com/c/4938394)

Correções de bugs

  • Inicialização: adicionamos a descoberta do Headless Shell ao ChromeDriver, permitindo que ele procure o binário chrome-headless-shell se solicitado por recursos e nenhum caminho explícito for fornecido (crrev.com/c/4987262, Bug: 4358). (Retornou após uma reversão anterior em crrev.com/c/4984449)
  • WebSockets: implementamos suporte parcial ao handshake de fechamento do WebSocket, garantindo que o ChromeDriver responda com um frame CLOSE quando um for recebido da extremidade remota (crrev.com/c/4931500, Bug: 4499).
  • Permissões: expôs options.disclaim_responsibility como uma flag de build para permitir que builds de fornecedores (como o Microsoft Teams) desativem essa opção, evitando que solicitações de permissão do macOS interrompam a automação de testes (crrev.com/c/4929495, Bug: 1223643).
  • Conformidade com o padrão C++: comportamento indefinido (UB) corrigido detectado pelo UBSan ao converter um double fora do intervalo em um int adicionando verificações de intervalo (crrev.com/c/4980055, Bug: 1394755).
  • FedCM: remoção do suporte à sintaxe de cabeçalho antiga, garantindo a conformidade com a sintaxe padrão login-status-http (crrev.com/c/4957073, Bug: 1381501).

Mudanças e refatorações internas

  • Adicionado teste de integração testReturnFrameElement para verificar o comportamento do ChromeDriver em relação ao tratamento de window.frameElement como uma referência desatualizada (crrev.com/c/4983549, Bug: 4477).
  • Melhoria do registro em log, garantindo que o ChromeDriver registre os caminhos específicos em que tenta localizar o binário do navegador (crrev.com/c/4976116, Bug: 4539).
  • Várias funções base::Time foram renomeadas para serem mais descritivas (por exemplo, FromDoubleT() para FromSecondsSinceUnixEpoch()) (crrev.com/c/4956111).
  • Refatoração do construtor net::StringIOBuffer e das instanciações IOBuffer para evitar cópias desnecessárias de strings e alocações de comprimento zero (crrev.com/c/4938384, crrev.com/c/4959174).
  • Limpeza do processamento de strings substituindo base::StrCat por + quando aplicável e usando base::AppendHexEncodedByte() (crrev.com/c/4963465, crrev.com/c/4977165).
  • Renomeação de DIR_SOURCE_ROOT para DIR_SRC_TEST_DATA_ROOT em todos os testes de //chrome* para fins de esclarecimento (crrev.com/c/4916045, Bug: 1264897).
  • Desativação de testes instáveis de PureBidiTest em criadores de builds para Mac (crrev.com/c/4983555, Bug: 1496826).

ChromeDriver 119

Novos recursos

  • BiDi: implementamos suporte para resolver referências fracas a objetos locais retornadas pela extremidade remota durante chamadas de função remota (crrev.com/c/4886760, Bug: 4536).
  • FedCM: adicionamos o comando confirmidpsignin com prefixo do fornecedor para oferecer suporte ao teste de origem da API IDP Sign-In Status (crrev.com/c/4811725, Bug: 1451884).

Correções de bugs

  • Emulação de dispositivos móveis: foi corrigido um problema em que dispositivos predefinidos sem dicas de cliente HTTP (por exemplo, configurações mais antigas) eram corrompidos ao serem preenchidos com valores padrão adequados (crrev.com/c/4887254, Bug: 4550).
  • Clássico: correção da serialização de objetos Map e Set. Agora eles são serializados corretamente como Object em vez de Collection, já que não têm uma propriedade length (crrev.com/c/4881378, Bug: 4031).
  • Clássico: restabelecemos a lógica para sempre fazer o download e usar a versão mais recente compatível do ChromeDriver durante os testes, voltando para versões específicas apenas quando surgem problemas de compatibilidade (crrev.com/c/4779613, revertendo crrev.com/c/4778973).
  • FedCM: padronizamos os comandos de automação do navegador renomeando Signin para Login (confirmidplogin) para alinhar com as discussões mais recentes sobre a especificação do FedCM (crrev.com/c/4901302, Bug: 1451884).
  • Teste: correção de testes da FedCM que falhavam quando os cookies de terceiros eram desativados ao ativar explicitamente a API IDP Sign-In Status durante a execução do teste (crrev.com/c/4889802, Bug: 1484833).
  • Teste: substituímos o marcador de posição de URL inválido ~NOTFOUND por ^NOTFOUND em executores de teste para obedecer às próximas mudanças na aplicação do padrão de URL do Chromium (crrev.com/c/4845589, Bug: 1416013).

Mudanças e refatorações internas

  • BiDi: atualizamos a dependência do BiDi Mapper para a versão 0.4.27, trazendo os mais recentes recursos e correções (crrev.com/c/4862031, crrev.com/c/4890322).
  • Substituímos várias APIs de ponteiro/comprimento em //url por std::string_view para melhorar a segurança e a conveniência (crrev.com/c/4897456).
  • A transição do utilitário generateWebDriverValue para usar a opção de serialização profunda (serializationOptions.serialization: deep) fornecida nativamente pelo protocolo BiDi (crrev.com/c/4889644).
  • Adição de testes de integração para verificar se a pesquisa em uma referência de elemento desatualizada retorna corretamente um erro "referência de elemento desatualizada" (crrev.com/c/4886793, Bug: 4440).
  • Melhoria na formatação do estilo de código em call_function.js (crrev.com/c/4882511, Bug: 4031).
  • Melhoria do feedback do usuário ao informar explicitamente quando ele se conecta via WebSockets que os pipes são compatíveis e recomendados para melhor confiabilidade e segurança (crrev.com/c/4882626, Bug: 3480).
  • Atualizamos a configuração do pacote WPT para arquivar results.html em testes webdriver_tests_suite, oferecendo uma interface melhor para visualizar resultados (crrev.com/c/4873223).
  • Correção da integração do DevTools com o WebView marcando WebContents do WebView e definindo o tipo do DevTools como popup_page em vez de other (crrev.com/c/4842093).
  • Renomeamos o destino de build do WPT chrome_wpt para chrome_wpt_tests por consistência e removemos o destino redundante webdriver_wpt_tests (crrev.com/c/4847474, Bug: 1474702).
  • Migração de run_py_tests.py da biblioteca optparse descontinuada para argparse (crrev.com/c/4849411, Bug: 4557).

ChromeDriver 118

Novos recursos

  • Testes de integração: introduzimos testes de integração em C++ para o ChromeDriver, permitindo o teste de classes específicas em relação ao tráfego real do CDP, preenchendo a lacuna entre os testes de unidade e os testes de integração em Python (crrev.com/c/4707855, Bug: 4528).
  • Crossbench: atualizamos a dependência crossbench com várias melhorias, incluindo novas histórias de comparativo de consumo de energia, melhor suporte a plataformas e dispositivos, depuração aprimorada e várias correções (crrev.com/c/4803743).

Correções de bugs

  • Capacidades: foi corrigido um problema em que o debuggerAddress estava faltando nas capacidades retornadas em configurações padrão. Agora, ele é retornado corretamente para oferecer suporte à comunicação BiDi baseada em CDP do Selenium (crrev.com/c/4789068, Bug: 4533).
  • Recursos: o ChromeDriver agora retorna valores platformName padrão (por exemplo, "linux", "windows", "mac") conforme exigido pela especificação do WebDriver (crrev.com/c/4797735, Bug: 4548).

Mudanças e refatorações internas

  • Migração do código em MockSocket para preferir base::span<> em vez de ponteiros brutos para melhorar a segurança (crrev.com/c/4832086).
  • Remoção de usos descontinuados de base::raw_ptr e base::raw_ref em favor das formas não qualificadas raw_ptr e raw_ref por limpeza automatizada (crrev.com/c/4773481).
  • Revertemos temporariamente uma mudança que sempre usava a versão mais recente do ChromeDriver, já que ela causava falhas nos canais estáveis/beta do Windows (crrev.com/c/4778973, revertendo crrev.com/c/4777430).
  • Configurações ajustadas do WPT (Web Platform Tests), incluindo a supressão de falhas somente de depuração em pointer_touch.py e a implementação da verificação de foco do lado do navegador para frames isolados (crrev.com/c/4844810, crrev.com/c/4572517).
  • Adicionamos o #include <vector> ausente ao client_hints.h para conformidade com o IWYU (crrev.com/c/4767547).
  • Migração de tipos básicos específicos da Apple (ScopedTypeRef, ScopedCFTypeRef, scoped_nsautorelease_pool) para o namespace base::apple::, deixando cabeçalhos de encaminhamento temporários para o Crashpad (crrev.com/c/4799213, crrev.com/c/4790744, crrev.com/c/4790741, crrev.com/c/4784010).

ChromeDriver 117

Novos recursos

Correções de bugs

  • Estabilidade: correção de um acesso a ponteiro nulo que causava falhas no ChromeDriver, o que resultava em erros de ConnectionRefused durante a execução de testes (crrev.com/c/4675633, Bug: 1457101).
  • Navegação: foi corrigido um problema em que os erros NoSuchExecutionContext e NoSuchWindow do Chrome durante a navegação não eram tratados de maneira uniforme. Agora, ambos são mapeados corretamente para tentar novamente a operação (crrev.com/c/4667156, Bug: 4459).
  • Emulação de dispositivos móveis: corrigimos a lógica de inferência para clientHints.mobile. Agora, ela é inferida corretamente do userAgent no Android e tem como padrão "false" em outras plataformas. Isso corrige um problema em que os tablets eram informados incorretamente como dispositivos móveis (crrev.com/c/4649348, Bug: 4243).
  • Criação de sessão: a criação de sessão foi atualizada para retornar corretamente o código de erro SessionNotCreated padrão em caso de falha, obedecendo estritamente à especificação do WebDriver do W3C (crrev.com/c/4638223, Bug: 4379). Observação: essa mudança foi revertida posteriormente porque alguns caminhos de código específicos exigem códigos de erro diferentes (crrev.com/c/4651188).

Mudanças e refatorações internas

  • Eliminamos os scripts manuais do processo de lançamento do ChromeDriver, já que ele agora está totalmente integrado ao processo de lançamento do Chrome e disponível na infraestrutura do Chrome for Testing (crrev.com/c/4520687, Bug: 4142).
  • Migração da infraestrutura do WPT (Web Platform Tests) para usar o conector wptrunner oficial em vez do run_webdriver_tests.py personalizado, melhorando significativamente a velocidade e a confiabilidade da execução e garantindo que o ChromeDriver seja reiniciado entre os testes para isolar falhas (crrev.com/c/4723147, crrev.com/c/4676070, crrev.com/c/4639168).
  • Refatoração extensa de ChromeLauncher e classes relacionadas para oferecer suporte à transição para pipes, diminuindo o acoplamento com DevToolsHttpClient e movendo a lógica do WebSocket para ramificações dedicadas (crrev.com/c/4632801, crrev.com/c/4674345).
  • Renomeamos o campo BrowserInfo.is_headless, que era enganoso, para BrowserInfo.is_headless_shell para fins de esclarecimento (crrev.com/c/4650452, Bug: 4358).
  • Substituímos vários métodos base::Value obsoletos pelos equivalentes modernos base::Value::Dict (por exemplo, FindDouble(), Set(), size()) em toda a base de código (crrev.com/c/4258936, crrev.com/c/4336805, crrev.com/c/4461067).112.0.5603.0, 113.0.5653.0, 114.0.5733.0
  • Removemos o uso de [w]ctype.h em favor de utilitários de string de base mais seguros e implementamos novas instalações para base::expected (crrev.com/c/4749459, crrev.com/c/4755226).
  • Implementados comandos de automação get_fedcm_dialog_title e select_fedcm_account em TestDriver para WPTs da API FedCM (crrev.com/c/4618303).
  • Atualizamos os scripts de build do mapeador BiDi para funcionar corretamente, independente do diretório de trabalho atual (crrev.com/c/4670550).
  • Os arquivos /chrome/test/chromedriver convertidos usam ARC (contagem automática de referências) em builds do macOS, adicionando o boilerplate necessário (crrev.com/c/4663602).
  • Tentamos desativar a comunicação por pipe por padrão usando um commit de carimbo de borracha automatizado, mas a mudança só afetou a configuração sem alterar o comportamento principal de pipes por padrão introduzido anteriormente (crrev.com/c/4683947).

ChromeDriver 116

Novos recursos

  • FedCM: adicionamos uma nova capacidade que permite aos clientes verificar se o ChromeDriver é compatível com comandos do FedCM sem precisar executá-los e detectar erros (crrev.com/c/4624924, Bug: 1356159).
  • Teste: foi ativado o reúso da janela de teste para testes do testharness executados via ChromeDriver em wptrunner para avaliar o impacto no desempenho e na instabilidade (crrev.com/c/4515180, Bug: 1394572).

Correções de bugs

  • Conformidade com o padrão C++: correção de um comportamento indefinido causado pelo uso incorreto de enumerações com escopo (enum class) diretamente em strings de formato, resolvendo novos avisos do compilador Clang (crrev.com/c/4628112, Bug: 1456289).
  • FedCM: corrigimos uma possível causa de instabilidade do teste ao corrigir um caso extremo que impedia o funcionamento correto do setdelayenabled (crrev.com/c/4606064, Bug: 1453412).

Mudanças e refatorações internas

  • BiDi: aumentamos a dependência do BiDi Mapper e atualizamos o script de build para extrair a revisão mais recente de "main" por padrão (crrev.com/c/4615087, crrev.com/c/4615791, Bug: 4226).
  • O ChromeDriver foi migrado para abrir e gravar todos os arquivos usando a codificação UTF-8 explicitamente (crrev.com/c/4614522).
  • Refatoração de ChromeImpl para eliminar a dependência de DevToolsHttpClient e redução do uso de SyncWebSocketFactory e BrowserInfo em preparação para a comunicação por pipes em vez de WebSockets (crrev.com/c/4571690, crrev.com/c/4571199, Bug: 3480).
  • Removemos o "modo padrão" descontinuado para frames isolados e atualizamos os testes associados para ativar a nova flag de recurso, continuando a migração para leilões do FLEDGE (crrev.com/c/4558645).
  • Melhoria nos testes do FedCM ao substituir asserções genéricas WaitForCondition por assertTrue para indicar claramente quando ocorrem tempos limite (crrev.com/c/4590211).
  • Marcados avisos raw_ptr instáveis e pendentes conhecidos em testes de unidade linux-rel (crrev.com/c/4598070).
  • Arquivo OWNERS atualizado para o mapeador BiDi (crrev.com/c/4614518).

ChromeDriver 115

Novos recursos

  • Emulação de dispositivos móveis: implementamos suporte para dicas de cliente HTTP do user agent na emulação de dispositivos móveis, permitindo que o ChromeDriver analise dicas de cliente HTTP de recursos e predefinições e as transmita para o Chrome (crrev.com/c/4498667, crrev.com/c/4466129, Bug: 4243).
  • Emulação de dispositivos móveis: atualizamos as predefinições de emulação de dispositivos móveis para usar a versão principal do navegador host em vez da versão do ChromeDriver ao substituir a string de formato %s no user agent (crrev.com/c/4502850, Bug: 4243).
  • Configuração: adicionamos suporte para o download de uma versão específica do ChromeDriver para um determinado canal, melhorando os cenários de automação em que o ChromeDriver é executado em uma plataforma diferente (como Android/WebView) do host (crrev.com/c/4550281).116.0.5791.0

Correções de bugs

  • Clássico: foi corrigido um problema em que a falha ao resolver um nó retornava incorretamente um UnknownError em vez do erro NoSuchElement padrão (crrev.com/c/4508952, Bug: 4440).
  • Emulação de dispositivos móveis: adicionamos declarações mais rigorosas aos presets de emulação de dispositivos móveis para garantir que a flag clientHints.mobile seja verdadeira se a string userAgent contiver "Mobile" (crrev.com/c/4507142, Bug: 4243).
  • Emulação de dispositivos móveis: migramos substituições de DeviceMetrics para usar o comando Emulation.setDeviceMetricsOverride do CDP em vez do equivalente de domínio Page descontinuado (crrev.com/c/4502614, Bug: 4243).

Mudanças e refatorações internas

  • BiDi: atualizamos a dependência do BiDi Mapper, ativando recursos de serialização avançada (crrev.com/c/4535936, crrev.com/c/4512195).
  • Removemos o método Connect descontinuado de DevToolsClient para preparar a migração do ChromeDriver para se comunicar por pipes (crrev.com/c/4521485, Bug: 3480).
  • Migração da base de código para preferir base::Value::Dict em vez de base::Value e substituição de métodos descontinuados, como FindStringKey(), SetKey() e SetByDottedPath() (crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150).
  • Passamos a usar funções string_util.h em vez de [w]ctype.h para conversões de tipo mais seguras (crrev.com/c/4529187).
  • Mudamos a lógica de carregamento de arquivos de inicialização para usar caminhos absolutos e garantir a consistência quando scripts e o Chrome são executados em locais diferentes (crrev.com/c/4504656).
  • O método CallAsyncFunction() não usado foi removido de web_view.h (crrev.com/c/4518363, Bug: 3376).
  • Aplicamos uma renomeação automática de base::raw_ptr para raw_ptr para seguir as preferências do guia de estilo (crrev.com/c/4476651).

ChromeDriver 114

Novos recursos

  • Clássico: transmitiu informações de MobileDevice para MobileEmulationOverrideManager para preparar o terreno para futuras dicas de cliente HTTP e substituições de UserAgent (crrev.com/c/4447524).
  • Teste: adicionamos fixtures de teste para o ChromeDriver (crrev.com/c/4459939).

Correções de bugs

  • Sem interface: correção de uma falha no novo modo sem interface ignorando silenciosamente solicitações de visualização de impressão programadas (por exemplo, window.print()), alinhando o comportamento ao modo sem interface antigo (crrev.com/c/4436313, Bug: 4385).
  • Recursos: corrigimos um bug de uso após movimentação nos recursos do ChromeDriver (crrev.com/c/4462094, Bug: 4243).
  • DevTools: removemos um DCHECK em DevToolsClientImpl::SendCommandInternal para evitar falhas quando a conexão do DevTools é interrompida, já que isso não é uma violação invariante (crrev.com/c/4370486, Bug: 4385).

Mudanças e refatorações internas

  • BiDi: atualização da dependência do BiDi Mapper (crrev.com/c/4418727).
  • Foram abordados vários avisos de ponteiro pendente durante a execução do teste de unidade, gerenciando corretamente referências não próprias e destruição local em testes de WebViewImpl e de registrador de eventos de desempenho (crrev.com/c/4374824, crrev.com/c/4368179).
  • Migração da base de código para usar a nova API base::Value v2, substituindo métodos descontinuados como Value::SetPath(), Value::SetStringPath() e base::ListValue (crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520).
  • Substituímos todos os usos de base::GUID por base::Uuid para alinhar com a renomeação da biblioteca de base principal (crrev.com/c/4455083).
  • Realizamos várias limpezas de código, incluindo encurtamento de código, uso de operações monádicas para expected, remoção de código morto e correção de violações de estilo (crrev.com/c/4475368, crrev.com/c/4464199).
  • Atualizamos os testes envolvendo frames isolados para usar o atributo config em vez do atributo src descontinuado (crrev.com/c/4382231).
  • Remoção do uso ineficaz de ShadowDOMV0 (crrev.com/c/4388302).
  • Reversão da adição de uma flag para uma correção de PDF da Skia (SK_IGNORE_PDF_EOF_NEWLINE_FIX) para permitir a redefinição da linha de base (crrev.com/c/4401451).
  • Atualizamos o proprietário do script de teste do ChromeDriver e fizemos ajustes para gerar o JSON de configuração exclusivamente para o pinpoint (crrev.com/c/4437492, crrev.com/c/4298554).
  • Adição de um include ausente (<cstring>) para std::strlen em web_view_impl.cc para corrigir um problema de build do IWYU (crrev.com/c/4376772).
  • Remoção de um arquivo de teste não usado (orientation_test.html) (crrev.com/c/4335668).

ChromeDriver 113.0.5672.63

Compatível com a versão 113 do Chrome

  • Problema resolvido 4205: IDs de objetos iguais no Classic e no BiDi [Pri-1]
  • Problema resolvido 4302: não suponha que o Mapper esteja na primeira guia em ExecuteGetWindowHandles [Pri-1]
  • Problema resolvido 4356: o Chrome 110 não usa o valor da preferência "download.default_directory" [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 113.0.5672.24

Compatível com a versão 113 do Chrome

  • Problema resolvido 4205: IDs de objetos iguais no Classic e no BiDi [Pri-1]
  • Problema resolvido 4302: não suponha que o Mapper esteja na primeira guia em ExecuteGetWindowHandles [Pri-1]
  • Problema resolvido 4356: o Chrome 110 não usa o valor da preferência "download.default_directory" [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 112.0.5615.49

Compatível com a versão 112 do Chrome

  • Problema resolvido 3517: ativar o recurso de impressão para não headless [Pri-]
  • Problema resolvido 4419: grande sobrecarga no Speedometer ao usar o chromedriver [Pri-3]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 112.0.5615.28

Compatível com a versão 112 do Chrome

  • Problema resolvido 4357: problema de sessão do Chromedriver versão 110.0.5481.77 com as opções --headless e --user-data-dir. [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 111.0.5563.64

Compatível com a versão 111 do Chrome

  • Problema resolvido 4216: executar o ChromeDriver com BiDiMapper personalizado [Pri-]
  • Problema resolvido 4300: o identificador de janela é interoperável entre o Classic e o BiDi [Pri-]
  • Problema resolvido 4325: o processamento de toJSON em jsonSerialize de call_function.js difere do padrão. [Pri-]
  • Problema 4330 resolvido: falha de DCHECK em DevToolsClientImpl::AddListener [Pri-]
  • Problema resolvido 4357: problema de sessão do ChromeDriver com as opções --headless e --user-data-dir [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 111.0.5563.41

Compatível com a versão 111 do Chrome

  • Problema resolvido 4357: problema de sessão do ChromeDriver com as opções --headless e --user-data-dir [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 111.0.5563.19

Compatível com a versão 111 do Chrome

  • Problema resolvido 4216: executar o ChromeDriver com BiDiMapper personalizado [Pri-]
  • Problema resolvido 4300: o identificador de janela é interoperável entre o Classic e o BiDi [Pri-]
  • Problema resolvido 4325: o processamento de toJSON em jsonSerialize de call_function.js difere do padrão. [Pri-]
  • Problema 4330 resolvido: falha de DCHECK em DevToolsClientImpl::AddListener [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 110.0.5481.77

Compatível com a versão 110 do Chrome

  • Problema resolvido 4193: falha ao iniciar uma nova sessão no Android 13 [Pri-]
  • Problema resolvido 4272: o WebSocket deve tratar code=0 como uma indicação de FIN [Pri-]
  • Problema resolvido 4276: corrigir problemas de conectividade no ChromeDriver [Pri-]
  • Problema resolvido 4295: o ChromeDriver com "webSocketUrl": true é instável [Pri-]
  • Problema resolvido 4297: o ChromeDriver Bidi serializa incorretamente [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 110.0.5481.30

Compatível com a versão 110 do Chrome

  • Problema resolvido 4193: falha ao iniciar uma nova sessão no Android 13 [Pri-]
  • Problema resolvido 4272: o WebSocket deve tratar code=0 como uma indicação de FIN [Pri-]
  • Problema resolvido 4276: corrigir problemas de conectividade no ChromeDriver [Pri-]
  • Problema resolvido 4295: o ChromeDriver com "webSocketUrl": true é instável [Pri-]
  • Problema resolvido 4297: o ChromeDriver Bidi serializa incorretamente [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 109.0.5414.74

Compatível com a versão 109 do Chrome

  • Problema resolvido 4179: a sessão BiDi precisa oferecer suporte a várias conexões [Pri-]
  • Problema resolvido 4203: melhorar as informações de créditos [Pri-]
  • Problema resolvido 4263: falha em Meta+A [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 109.0.5414.25

Compatível com a versão 109 do Chrome

  • Problema resolvido 4179: a sessão BiDi precisa oferecer suporte a várias conexões [Pri-]
  • Problema resolvido 4203: melhorar as informações de créditos [Pri-]
  • Problema resolvido 4263: falha em Meta+A [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 108.0.5359.71

Compatível com a versão 108 do Chrome. Para mais detalhes, consulte as notas da versão.

ChromeDriver 108.0.5359.22

Compatível com a versão 108 do Chrome

  • Problema resolvido 4204: correção do teste WPT com falha test_top_level_and_one_child [Pri-]
  • Problema resolvido 4215: renomear build chromedriver_mac64_m1 para chromedriver_mac_arm64 [Pri-]
  • Problema resolvido 4221: falha quando um comando de clique fecha o navegador [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 107.0.5304.62

Compatível com a versão 107 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 107.0.5304.18

Compatível com a versão 107 do Chrome

  • Problema resolvido 4180: proíbe o processamento de comandos BiDi até que seja notificado de que o BiDiMapper foi iniciado [Pri-]
  • Problema resolvido 4198: o ChromeDriver BiDi não deve presumir que o BiDiMapper está sempre na primeira guia [Pri-]
  • Problema resolvido 4207: erro do WebDriver ao executar o WPT [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 106.0.5249.61

Compatível com a versão 106 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 106.0.5249.21

Compatível com a versão 106 do Chrome

  • Problema resolvido 4016: adicionar suporte básico a BiDi ao ChromeDriver (baseado em Mapper) [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 105.0.5195.52

Compatível com a versão 105 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 105.0.5195.19

Compatível com a versão do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 104.0.5112.79

Compatível com a versão 104 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 104.0.5112.29

Compatível com a versão 104 do Chrome

  • Resolvido o problema 4121: o comando WebDriver às vezes falha com "resposta de comando inesperada" [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 104.0.5112.20

Compatível com a versão 104 do Chrome

  • Resolvido o problema 4121: o comando WebDriver às vezes falha com "resposta de comando inesperada" [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 103.0.5060.134

Compatível com a versão 103 do Chrome

  • Problema resolvido 4048: frame de destino desconectado [Pri-]
  • Resolvido o problema 4121: o comando WebDriver às vezes falha com "resposta de comando inesperada" [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 103.0.5060.53

Compatível com a versão 103 do Chrome

  • Problema resolvido 4048: frame de destino desconectado [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 103.0.5060.24

Compatível com a versão 103 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 102.0.5005.61

Compatível com a versão 102 do Chrome

  • Problema resolvido 1309282: o chromedriver não é compatível com chaves multivaloradas [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 102.0.5005.27

Compatível com a versão 102 do Chrome

  • Problema resolvido 1309282: o chromedriver não é compatível com chaves multivaloradas [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 101.0.4951.41

Compatível com a versão 101 do Chrome

  • Problema resolvido 4046: DCHECK atingido ao anexar um frame isolado vazio [Pri-]
  • Problema resolvido 4080: a troca para frame aninhado falha [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 101.0.4951.15

Compatível com a versão 101 do Chrome

  • Problema resolvido 4046: DCHECK atingido ao anexar um frame isolado vazio [Pri-]
  • Problema resolvido 4080: a troca para frame aninhado falha [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 100.0.4896.60

Compatível com a versão 100 do Chrome

  • Problema resolvido 4002: suporte a frames isolados [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 100.0.4896.20

Compatível com a versão 100 do Chrome

  • Problema resolvido 4002: suporte a frames isolados [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 99.0.4844.51

Compatível com a versão 99 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 99.0.4844.35

Compatível com a versão 99 do Chrome

  • REVERTIDO!!! Resolvido o problema 2269: impossível usar caracteres não BMP (pontos de código acima de U+FFFF) [Pri-3]
  • Problema resolvido chromium:1295243: regressão em sendKeys do ChromeDriver [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 99.0.4844.17

Compatível com a versão 99 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 98.0.4758.102

Compatível com a versão 98 do Chrome

  • Problema resolvido 3933: clicar na borda da janela de visualização não funciona sem erro [Pri-]
  • REVERTIDO!!! Resolvido o problema 2269: impossível usar caracteres não BMP (pontos de código acima de U+FFFF) [Pri-3]
  • Problema resolvido chromium:1295243: regressão em sendKeys do ChromeDriver [Pri-1]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 98.0.4758.80

Compatível com a versão 98 do Chrome

  • Problema resolvido 3933: clicar na borda da janela de visualização não funciona sem erro [Pri-]
  • Resolvido o problema 2269: impossível usar caracteres não BMP (pontos de código acima de U+FFFF) [Pri-3]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 98.0.4758.48

Compatível com a versão 98 do Chrome

  • Problema resolvido 3933: clicar na borda da janela de visualização não funciona sem erro [Pri-]
  • Resolvido o problema 2269: impossível usar caracteres não BMP (pontos de código acima de U+FFFF) [Pri-3]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 97.0.4692.71

Compatível com a versão 97 do Chrome

  • Problema resolvido 3878: melhor tratamento de coordenadas de elementos fracionários para clique em elemento [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 97.0.4692.36

Compatível com a versão 97 do Chrome

  • Problema resolvido 3878: melhor tratamento de coordenadas de elementos fracionários para clique em elemento [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 97.0.4692.20

Compatível com a versão 97 do Chrome

  • Problema resolvido 3878: melhor tratamento de coordenadas de elementos fracionários para clique em elemento [Pri-]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 96.0.4664.45

Compatível com a versão 96 do Chrome

  • Problema resolvido 3445: impossível acessar elementos em iframe dentro de uma raiz shadow [Pri-3]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 96.0.4664.35

Compatível com a versão 96 do Chrome

  • Problema resolvido 3445: impossível acessar elementos em iframe dentro de uma raiz shadow [Pri-3]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 96.0.4664.18

Compatível com a versão 96 do Chrome

  • Resolvido o problema 3445: impossível acessar elementos em um iframe dentro de uma raiz shadow [Pri-3]

Para mais detalhes, consulte as notas da versão.

ChromeDriver 95.0.4638.69

Compatível com a versão 95 do Chrome

  • Problema resolvido 3857: o cabeçalho do host ou de origem é especificado e não está na lista de permissões ou no localhost [Pri-1]
  • Argumento --allowed-origins adicionado

Para mais detalhes, consulte as notas da versão.

ChromeDriver 95.0.4638.54

Compatível com a versão 95 do Chrome

  • Problema resolvido 3857: o cabeçalho do host ou de origem é especificado e não está na lista de permissões ou no localhost [Pri-1]
  • Argumento --allowed-origins adicionado

Para mais detalhes, consulte as notas da versão.

ChromeDriver 95.0.4638.17

Compatível com a versão 95 do Chrome

  • Problema resolvido 3857: o cabeçalho do host ou de origem é especificado e não está na lista de permissões ou no localhost [Pri-1]
  • Argumento --allowed-origins adicionado

Para mais detalhes, consulte as notas da versão.

ChromeDriver 95.0.4638.10

Compatível com a versão 95 do Chrome

  • Problema resolvido 3857: o cabeçalho do host ou de origem é especificado e não está na lista de permissões ou no localhost [Pri-1]
  • Argumento --allowed-origins adicionado

Para mais detalhes, consulte as notas da versão.

ChromeDriver 94.0.4606.113

Compatível com a versão 94 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 94.0.4606.61

Compatível com a versão 94 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 94.0.4606.41

Compatível com a versão 94 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 93.0.4577.63

Compatível com a versão 93 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 93.0.4577.15

Compatível com a versão 93 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 92.0.4515.107

Compatível com a versão 92 do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 92.0.4515.43

Compatível com a versão 92 do Chrome

  • Problema resolvido 3389: validação de host para solicitações do ChromeDriver

Para mais detalhes, consulte as notas da versão.

ChromeDriver 91.0.4472.101

Compatível com a versão 91 do Chrome

  • Problema resolvido 1205107: não foi possível receber o valor do atributo para campos no aplicativo da Web.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 91.0.4472.19

Compatível com a versão 91 do Chrome

  • Problema resolvido 3744: SendKeys() e Click() falham silenciosamente após a navegação por link
  • Problema resolvido 3746: o endpoint de atributo atualiza valores incorretamente

Para mais detalhes, consulte as notas da versão.

ChromeDriver 90.0.4430.24

Compatível com a versão 90 do Chrome

  • Problema resolvido 3708: o inView de GetElementLocation falha para elementos no shadow DOM
  • Problema resolvido 3721: coletar o registro de desempenho do service worker quando ativado
  • Problema resolvido 3731: AdbImpl::GetPidByName não funciona corretamente em SOs Android não padrão, como no OnePlus.
  • Problema resolvido 3733: falha catastrófica com domínio em localhost
  • Problema resolvido 3734: o driver deve gerar um erro ao tentar definir um cookie no domínio errado.
  • Problema resolvido 3743: refatorar a função de chamada e corrigir o problema de remoção de elementos

Para mais detalhes, consulte as notas da versão.

ChromeDriver 89.0.4389.23

Compatível com a versão 89 do Chrome

  • Problema resolvido 3667: tempo limite excedido ao receber uma mensagem do renderizador
  • Problema resolvido 3675: "GetElementLocation" usa o método "inView", que processa booleanos de maneira incorreta como matrizes.
  • Problema resolvido 3682: "GetElementRegion" retorna o tamanho incorreto para elementos parcialmente fora da janela de visualização
  • Problema resolvido 3690: o ChromeDriver falha se as extensões usarem a API chrome.windows

Para mais detalhes, consulte as notas da versão.

ChromeDriver 88.0.4324.96

Compatível com a versão 88 do Chrome

  • Problema resolvido 3641: a página não é carregada/renderizada quando a janela do navegador não está em foco com o Chrome Beta v87 e o chromedriver v(87/86)

Para mais detalhes, consulte as notas da versão.

ChromeDriver 88.0.4324.27

Compatível com a versão 88 do Chrome

  • Problema 3611 resolvido: a saída do getText() no protractor é diferente de <element>.innerText
  • Problema resolvido 3625: melhorar a compatibilidade de captura de tela de elementos
  • Problema resolvido 3628: referência de elemento desatualizada e URL errado informado com outro URL como parte do caminho
  • Problema resolvido 3631: adicionar suporte ao recurso webauthn:extension:largeBlob
  • Problema 3635 resolvido: Chromedriver 86 - chromedriver.quit() não parece transmitir o evento de descarregamento corretamente.
  • Resolvemos o problema 3649: a cópia do texto selecionado para a área de transferência não funciona no Windows 10 ao usar o modo sem interface gráfica.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 87.0.4280.88

Compatível com a versão 87 do Chrome

  • Problema resolvido 3641: a página não é carregada/renderizada quando a janela do navegador não está em foco com o Chrome Beta v87 e o chromedriver v(87/86)
  • Problema resolvido 3657: o navegador em segundo plano da captura de tela atingiu o tempo limite

Para mais detalhes, consulte as notas da versão.

ChromeDriver 87.0.4280.20

Compatível com a versão 87 do Chrome

  • Problema resolvido 2421: excluir canais de encaminhamento de porta antigos no adb-server do Android
  • Problema 3474 resolvido: a lista de dispositivos móveis emulados precisa ser atualizada
  • Problema resolvido 3507: implementar "get computed role"
  • Problema 3508 resolvido: implementar "get computed label"
  • Problema resolvido 3584: renomear a opção de linha de comando do ChromeDriver --whitelisted-ips
  • Problema resolvido 3588: conexão Bidi WebSocket
  • Problema 3594 resolvido: a navegação é concluída prematuramente se o OOPIF for carregado antes da página principal.
  • Problema resolvido 3598: uma opção de linha de comando para a porta do DevTools ser encaminhada para o soquete webview_devtools_remote
  • Problema resolvido 3608: o debuggerAddress do Chromedriver não é compatível com ipv6

Para mais detalhes, consulte as notas da versão.

ChromeDriver 86.0.4240.22

Compatível com a versão 86 do Chrome

  • Problema 3370 resolvido: desligue o Chrome corretamente ou o cookie não será salvo corretamente no arquivo de persistência do SQLite.
  • Problema resolvido 3401: o JS de localização de elementos não localiza o centro visível do elemento
  • Problema resolvido 3462: para sendKeys, a tecla CMD não funciona no MAC
  • Problema resolvido 3541: melhorar o registro em log entre o cliente e o ChromeDriver
  • Problema resolvido 3559: gera a versão do Chrome quando o ChromeDriver informa incompatibilidade

Para mais detalhes, consulte as notas da versão.

ChromeDriver 85.0.4183.87

Compatível com o Chrome 85

  • Problema resolvido 3578: o Chrome 85 não permite mais interação suave com janelas quando uma caixa de diálogo de alerta está aberta

Para mais detalhes, consulte as notas da versão.

ChromeDriver 85.0.4183.83

Compatível com o Chrome 85

  • Problema resolvido 3577: o ChromeDriver 85 não detecta a mudança no diretório do Chrome (C:\Arquivos de Programas)

Para mais detalhes, consulte as notas da versão.

ChromeDriver 85.0.4183.38

Compatível com o Chrome 85

  • Problema resolvido 3214: ChromeDriver78: Sendkeys redefine a seleção de texto com contenteditable
  • Problema resolvido 3376: remover o comando LaunchApp do ChromeDriver
  • Problema resolvido 3432: às vezes, o NavigationTracker não detecta quando a página termina de carregar.
  • Problema 3481 resolvido: novo endpoint de impressão de acordo com a especificação w3c
  • Problema resolvido 3488: "driver.get" não gera erro quando o proxy está configurado incorretamente
  • Problema resolvido 3502: use document.hasFocus() para verificar se o elemento está em foco
  • Problema resolvido 3515: selenium.common.exceptions.WebDriverException: Message: unknown error: bad inspector message

Para mais detalhes, consulte as notas da versão.

ChromeDriver 84.0.4147.30

Compatível com a versão 84 do Chrome

  • Problema resolvido 3420: depois de mudar para a janela de impressão, o chromedriver para de responder
  • Problema 3421 resolvido: o driver retorna texto cirílico sem estilos.
  • Problema 3422 resolvido: GetElementText falha com o protótipo 1.6.0.3
  • Problema resolvido 3434: não é possível receber mensagens "assert" dos registros do "navegador"

Para mais detalhes, consulte as notas da versão.

ChromeDriver 83.0.4103.39

Compatível com a versão 83 do Chrome

  • O Chromedriver foi atualizado para funcionar corretamente com o prototype.js.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 83.0.4103.14

Compatível com a versão 83 do Chrome

  • Problema resolvido 1778: descontinuação de launchApp do ChromeDriver
  • Problema resolvido 2520: o InitSession pode esperar indefinidamente quando o Chrome não responde
  • Problema resolvido 3120: download do modo headless em uma nova guia
  • Problema resolvido 3234: confirmar ponto e vírgula encontrado antes da substring
  • Problema resolvido 3240: o ExecuteGetElementRect não verifica o status retornado de GET_SIZE
  • Problema resolvido 3331: o método get_cookies() está retornando chaves "expiry" do tipo double, mas deveria ser int64 no modo w3c.
  • Problema resolvido 3332: tempo limite de nova tentativa registrado como grave
  • Problema resolvido 3339: o Chromedriver foi encerrado inesperadamente com o código null, sinal SIGTRAP
  • Problema resolvido 3351: melhorar a mensagem de considerações de segurança
  • Problema resolvido 3352: compatibilidade com SendKeys para elementos de cor
  • Problema resolvido 3353: a espera pela navegação pendente continua após a destruição do contexto do frame
  • Resolvido o problema 3375: o Chromedriver v80 fica parado em getPageSource em alguns sites
  • Problema resolvido 3383: o ChromeDriver 80+ no Windows parece sair ou ficar parado em determinados comandos de elemento ou clique.
  • Problema resolvido 3399: remoção da verificação "wasThrown"

ChromeDriver 81.0.4044.138

Compatível com o Chrome 81

  • O Chromedriver foi atualizado para funcionar corretamente com o prototype.js.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 81.0.4044.69

Compatível com o Chrome 81

  • Correção: o Chromedriver falha ao usar getPageSource em alguns sites.
    • Corrigido: o ChromeDriver falha em determinados comandos de elemento ou clique.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 81.0.4044.20

Compatível com o Chrome 81

  • Foi corrigido um erro que ocorria ao tentar acessar a localização de um elemento HTML.
    • Os comandos "Get" e "Add Cookie" agora são específicos do frame.
    • Resolvidos alguns problemas que ocorrem com sites que redefinem objetos JavaScript padrão.
    • O ChromeDriver vai continuar aguardando a conclusão do carregamento depois de receber uma mensagem de destino fechado.
    • O Chromedriver agora retorna um código de erro compatível com a especificação para tempos limite
    • Correção: tempo de resposta inesperadamente lento do ChromeDriver no comando NewSession.
    • Agora é possível definir tempos limite de mais de 10 minutos.
    • Corrigido: o ChromeDriver não consegue se conectar ao DevTools devido a uma incompatibilidade entre IPv4 e IPv6.
    • Ordem de pesquisa restaurada para o binário do Chrome no Linux.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 80.0.3987.106

Compatível com o Chrome 80

  • Ordem de pesquisa restaurada para o binário do Chrome no Linux

Para mais detalhes, consulte as notas da versão.

ChromeDriver 80.0.3987.16

Compatível com o Chrome 80

  • Correção: o carregamento da página era cancelado ao usar um proxy.
  • O Chromedriver agora aguarda o carregamento do frame atual.
  • O registro do ChromeDriver inclui a porta usada pelo driver.
  • Ativamos o SetGeoLocation para o modo w3c.
  • Adição do texto de alerta ausente para o status UnexpectedAlertOpen.
  • Melhoria na mensagem quando a extensão CRX2 é carregada.
  • Correção de uma possível disputa em ExecuteGetPageSource.
  • O ChromeDriver vai adicionar a flag --ignore-certificate-errors quando a capacidade acceptInsecureCerts for "true".
  • Atualizamos a mensagem de erro e o status de retorno para "no such execution context"
  • Correção: o ChromeDriver pode ficar bloqueado indefinidamente enquanto aguarda a navegação pendente.
  • Adição do atributo "SameSite" a "AddCookie" e "GetCookie".

Para mais detalhes, consulte as notas da versão.

ChromeDriver 79.0.3945.36

Compatível com o Chrome 79

Inclui a seguinte mudança em relação à versão 79.0.3945.16:

  • Correção do cálculo incorreto de coordenadas de elementos

Para mais detalhes, consulte as notas da versão.

ChromeDriver 79.0.3945.16

Compatível com o Chrome 79

  • Correção de uma falha do ChromeDriver causada por um alerta do JavaScript disparado durante a execução do comando
    • Correção de um bug que fazia o Chromedriver bloquear quando um alerta era disparado durante uma captura de tela.
    • Remoção de "--ignore-certificate-errors" do comando de inicialização do Chrome
    • Mudança de "platform" e "platformName" para "windows" no Win10
    • Corrigido window.navigator.webdriver indefinido quando "enable-automation" é excluído
  • Correção do teste WPT "test_not_editable_inputs[hidden]"
    • Corrigido o erro "O elemento não pode ser clicado" ao usar o modo headless

Para mais detalhes, consulte as notas da versão.

ChromeDriver 78.0.3904.105

Compatível com a versão 78 do Chrome

Inclui a seguinte mudança em relação à versão 78.0.3904.70: * Correção do cálculo incorreto das coordenadas do elemento

Para mais detalhes, consulte as notas da versão.

ChromeDriver 78.0.3904.70

Compatível com a versão 78 do Chrome

Inclui a seguinte mudança em relação à versão 78.0.3904.11:

  • Reversão da mudança para ajustar o tamanho da captura de tela em telas Retina devido a vários problemas relatados

Para mais detalhes, consulte as notas da versão.

ChromeDriver 78.0.3904.11

Compatível com a versão 78 do Chrome

  • Vários problemas foram corrigidos na serialização de objetos JavaScript.
    • Correção de um bug na correspondência de recursos do Chrome no Android.
    • Automação de permissões implementada
    • Tamanho fixo da captura de tela em tela Retina
  • Correção do tempo limite de carregamento de página em alguns cenários
    • Melhoria na correspondência de recursos do platformName
    • Corrigimos o código de erro retornado ao mover o ponteiro para as opções da lista suspensa.
    • Correção de um problema que afetava o download no modo headless

Para mais detalhes, consulte as notas da versão.

ChromeDriver 77.0.3865.40

Compatível com o Chrome 77

Inclui as seguintes mudanças em relação à versão 77.0.3865.10:

  • Correção de dois bugs na serialização e desserialização de objetos JavaScript
  • Correção do processamento de platformName: android ao corresponder recursos

Para mais detalhes, consulte as notas da versão.

ChromeDriver 77.0.3865.10

Compatível com o Chrome 77

  • Correção de vários problemas na implementação da API Actions.
    • Melhoria na execução do código JavaScript e no processamento de resultados
    • Correção de um bug que rejeitava incorretamente solicitações POST com corpo vazio no modo OSS.
  • Um rastreador de navegação mais robusto
  • Suporte à estratégia de carregamento de página antecipado
    • Adicionado o comando "New Window" da especificação W3C WebDriver
  • Suporte para salvar downloads de arquivos no modo sem interface gráfica
  • Adição de suporte para carregar extensões CRX3

Para mais detalhes, consulte as notas da versão.

ChromeDriver 76.0.3809.126

Compatível com a versão 76 do Chrome

Inclui as seguintes mudanças em relação à versão 76.0.3809.68:

  • Correção de dois bugs na serialização e desserialização de objetos JavaScript

Para mais detalhes, consulte as notas da versão.

ChromeDriver 76.0.3809.68

Compatível com a versão 76 do Chrome

Inclui as seguintes mudanças em relação à versão 76.0.3809.25:

  • Correção de um bug na detecção de referência circular em objetos JavaScript
  • Correção de um bug que fazia o ChromeDriver falhar quando ocorriam determinados tipos de erros de JavaScript.
  • Correção de um bug que impedia a API Actions de interagir com elementos dentro de shadow DOMs.
    • Correção de um bug no rastreamento do estado da tecla modificadora entre comandos da API Actions.
    • Correção de um bug no rastreamento de locais de ponteiro entre comandos da API Actions.
    • Salvar o erro "Não é possível chamar um comando que não é padrão do W3C no modo W3C" no arquivo de registro quando ele ocorrer

Para mais detalhes, consulte as notas da versão.

ChromeDriver 76.0.3809.25

Compatível com a versão 76 do Chrome

Inclui as seguintes mudanças em relação à versão 76.0.3809.12:

  • Correção de um bug que rejeitava incorretamente solicitações POST com corpo vazio no modo OSS.
  • Adição de novos endpoints para recuperar o registro do Chrome.
    • Adição do endpoint para o comando "Is Displayed" no modo W3C.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 76.0.3809.12

Compatível com a versão 76 do Chrome

  • Implementação concluída da API Actions
    • Melhoria na conformidade com a especificação do tratamento de tempo limite de script
    • Melhoria na serialização dos resultados do comando "Executar script"
    • Correção de problemas ao rolar um elemento para a visualização
    • Adicionamos o processamento da tecla "Cancelar" definida na especificação do WebDriver.
    • Correção do processamento de respostas de erro de alerta não processadas
    • Correção do processamento do elemento <details>
    • A opção "excludeSwitches" foi atualizada para permitir traços opcionais no início dos nomes de switches.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 75.0.3770.140

Compatível com o Chrome 75

Inclui as seguintes mudanças em relação à versão 75.0.3770.90:

  • Correção de um bug que causava falhas no ChromeDriver quando ocorriam alguns tipos de erros de JavaScript.
  • Correção de um bug na preservação do estado da tecla modificadora entre ações.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 75.0.3770.90

Compatível com o Chrome 75

Inclui as seguintes mudanças em relação à versão 75.0.3770.8:

  • Correção de um bug que rejeitava incorretamente solicitações POST com corpo vazio no modo OSS.
  • Adição de novos endpoints para recuperar o registro do Chrome

Para mais detalhes, consulte as notas da versão.

ChromeDriver 75.0.3770.8

Compatível com o Chrome 75

A mudança mais perceptível é que o ChromeDriver agora é executado no modo compatível com o padrão W3C por padrão. Outras mudanças incluem:

  • Correção de um bug que fazia o evento de desfoque ser gerado duas vezes durante a limpeza do elemento.
  • A capacidade loggingPrefs foi renomeada para goog:loggingPrefs, conforme exigido pelo padrão W3C.
  • Correção do tratamento de erros no modo W3C
    • Tratamento correto da criação de cookies sem ponto inicial no nome de domínio
    • Permite nulo para tempo limite de script
    • Correção do comando "Enviar chaves de elemento" para entrada de arquivo com o atributo "multiple"
    • O comando "Get Active Element" foi corrigido para retornar o erro "no such element" quando não há um elemento ativo.
    • Correção da navegação para um URL malformado para retornar o erro "argumento inválido"
    • Correção do código de status HTTP quando um ID de sessão inválido é recebido
    • Correção da resposta de erro quando o parâmetro de entrada está ausente ou incorreto
    • O comando "Executar script" foi corrigido para processar comentários de JavaScript orientados a linhas.

Para mais detalhes, consulte as notas da versão.

ChromeDriver 74.0.3729.6

Compatível com a versão 74 do Chrome

  • Correção de um bug que gerava um arquivo debug.log inesperado no Windows.
  • Corrigimos o clique e o arrastar / soltar do mouse em documentos SVG.
  • Adicionado cabeçalho cache-control em respostas do ChromeDriver
  • Corrigimos o tipo de erro quando um clique é interceptado por um elemento diferente.
  • Correção de um bug que causava falha no ChromeDriver em dispositivos Linux sem /dev/shm
  • Correção de alguns tipos de eventos de clique duplo.
  • Comando "Get Sessions" corrigido
  • Correção da verificação de erros no comando "Mudar para frame"
  • Comando "Ver origem da página" corrigido

Para mais detalhes, consulte as notas da versão.

ChromeDriver 73.0.3683.68

Compatível com o Chrome 73

  • Correção de um bug que gerava um arquivo debug.log inesperado no Windows.
  • Correção do código de erro retornado pelo comando "Executar script" em alguns cenários
  • Adicionado cabeçalho cache-control em respostas do ChromeDriver
  • Fizemos o servidor HTTP manter a conexão ativa por padrão.
  • Correção do comando "Fechar janela" para processar corretamente os comandos do usuário.
  • Corrigimos o código de erro retornado ao enviar chaves para um elemento desativado.
  • Melhoria da conformidade da especificação do tratamento de valores de tempo limite
  • Conformidade aprimorada com a especificação do comando "Adicionar cookie"
    • Aumento do tamanho da fila de escuta do servidor HTTP
  • O comando "Is Element Displayed" foi corrigido no shadow DOM v0.
    • Adição de um aviso sobre a mudança no comportamento do comando "Limpar elemento" no arquivo de registro
  • Correção do comando "Executar script" para converter corretamente document.all no formato JSON
  • Melhoria no tratamento de referências de elementos inválidas

Para mais detalhes, consulte as notas da versão.

ChromeDriver 2.46

Compatível com o Chrome v71 a 73

  • Correção do código de erro retornado pelo comando "Executar script" em alguns cenários
  • Fizemos o servidor HTTP manter a conexão ativa por padrão.
  • Correção do comando "Fechar janela" para processar corretamente os comandos do usuário.
  • Corrigimos o código de erro retornado ao enviar chaves para um elemento desativado.
  • Melhoria da conformidade da especificação do tratamento de valores de tempo limite
  • Melhoria na conformidade com a especificação do comando "Adicionar cookie"
  • Melhoria da conformidade com a especificação do comando "Switch to Frame"
  • Aumento do tamanho da fila de escuta do servidor HTTP
  • Correção do comando "Is Element Displayed" no DOM shadow v0.
  • Comando de duplo clique em elemento fixo
  • Adição de um aviso sobre a mudança no comportamento do comando "Limpar elemento" no arquivo de registro
  • Correção do comando "Executar script" para converter corretamente document.all no formato JSON
  • Melhoria no tratamento de referências de elementos inválidas

Para mais detalhes, consulte as notas da versão.

ChromeDriver 2.45

Compatível com o Chrome v70 a 72

  • Corrigido: "Nova sessão" não está em conformidade com a especificação
  • Correção: o ChromeDriver não deve iniciar o Chrome se as versões do Chrome e do ChromeDriver forem incompatíveis
  • Correção: o comando "Encontrar elemento" retorna o código de erro errado quando um localizador inválido é usado
  • Corrigido: alguns códigos de status do ChromeDriver estão incorretos
  • Correção do erro de compilação em JS dentro de WebViewImpl::DispatchTouchEventsForMouseEvents
  • Os comandos de tamanho de janela fixa precisam processar solicitações do usuário
  • Correção: o ChromeDriver não inicia o Chrome corretamente com a opção "user-data-dir="
  • O comando Fixed Status não está em conformidade com a especificação
  • Correção de "Adicionar suporte para strictFileInteractability"

ChromeDriver 2.44

Compatível com o Chrome v69-71

  • Correção do WindowMaximize no Mac
  • Correção do erro "alerta aberto incorreto" para chamada de manipulação de janela
  • O envio de teclas de elemento fixo precisa receber a propriedade "text" no modo W3C.
  • Caso especial fixo do XML: "Is Element Enabled" não é processado de acordo com a especificação.
  • Corrigido o caso especial de XML em que "Get Element CSS Value" não era processado de acordo com a especificação.
  • Correção: "Set Window Rect" precisa verificar entradas inválidas
  • Correção do suporte a novos modos de unhandledPromptBehavior

ChromeDriver 2.43

Compatível com o Chrome v69-71

As mudanças incluem:

  • Correção: a análise da configuração de proxy não está em conformidade com o padrão
  • O comando "Iniciar app" foi corrigido e agora funciona de forma consistente.
  • Corrigido: a captura de tela do elemento dentro do iFrame é feita incorretamente
  • Adição do suporte do ChromeDriver para redimensionamento de janelas em uma conexão remota
  • Corrigido: os códigos de erro não são tratados no elemento "Clear"
  • Corrigido: não esperar até que o elemento esteja visível
  • Correção: a propriedade "Get element" não foi implementada.
  • O Fixed Switch to Frame não está em conformidade com a especificação
  • Corrigido o problema em que "Executar script assíncrono" não retornava códigos de erro compatíveis com a especificação.
  • Correção: "Executar script" não retorna códigos de erro compatíveis com a especificação
  • Corrigimos o código de erro em "ExecuteGet" que não estava em conformidade com a especificação.
  • Correção: "Enviar texto de alerta" não retorna códigos de erro compatíveis com a especificação
  • Correção de clear() em um tipo de entrada="date" que finge que o elemento não pode ser editado pelo usuário
  • O Chromedriver corrigido recebe o identificador da janela da guia aberta manualmente.
  • Correção: permitir anexar ou iniciar um novo arquivo de registro para o chromedriver
  • Corrigimos o problema em que "Nova sessão" não invocava o modo w3c se a flag estivesse em "firstMatch".

ChromeDriver 2.42

Compatível com o Chrome v68-70

As mudanças incluem:

  • ClickElement corrigido na emulação de dispositivos móveis
  • Corrigidos IPs permitidos com IPv4
  • Correção da inicialização do ChromeDriver com a flag whitelisted-ips no Mac OS.
  • Correção de "SetTimeout" para aceitar formatos pré-W3C e W3C.
  • Captura de tela do elemento de ação corrigida
  • O ChromeDriver corrigido também procura binários do Chrome em um PATH do sistema.
  • Correção de "Maximizar janela" e "Tela cheia"
  • Implementamos o recurso de repetição de registros. ( ainda não funciona para Android e navegador remoto)
  • Correção de alguns códigos de erro que não estavam em conformidade com o padrão W3C.
  • Correção de console.log com vários argumentos não processados corretamente
  • Correção: "GetElementRect" agora permite números de ponto flutuante de precisão dupla.
  • Emulação de toque fixo

ChromeDriver 2.41

Compatível com o Chrome v67 a 69

As mudanças incluem:

  • Corrigimos um problema que ocorria quando o ChromeDriver era executado com a opção "whitelisted-ips".
  • A porta de depuração remota é retornada em recursos
  • Implementada a obtenção do tamanho da janela no Android
  • As mensagens de erro de inicialização do Chrome para computador foram aprimoradas
  • O ChromeDriver falha rapidamente quando não consegue iniciar os binários do Chrome
  • O valor de retorno da janela de fechamento está em conformidade com a especificação