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.Zpara 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
kImplicitWaitpara testes deFindElement(s)WhileNavigatingemcommands_unittestao 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.hem arquivos//chrome.cc, reforçando o uso decallback.hquando os callbacks são realmente utilizados (crrev.com/c/7200285, Bug: 40318405). Movemoslogging::LoggingSettingsdebase/logging.hpara o próprio cabeçalhobase/logging/logging_settings.hpara 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 abase/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 iteradorfind(key)mais eficientes (crrev.com/c/7705392, crrev.com/c/7693277, Bug: 452950815). InjetamosThreadDelegatepelo construtorThreadpara melhorar o encapsulamento e adicionamos uma opçãoRestartableaThreadpara 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_buffersemUNSAFE_TODO()granulares em todo o arquivochrome/(crrev.com/c/7132241, Bug: 409340989). EncurtamosIOBuffer->span().first()paraIOBuffer->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
moduleemchromedriver_py_testsapó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
ElementClickprocessa 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
DecodeURLModeparaDecodeUrlModeeDecodeURLEscapeSequences()paraDecodeUrlEscapeSequences()(crrev.com/c/7593238). Introduzimosurl::UrlEscapeDecoderpara simplificar o uso da decodificação de URL em toda a base de código (crrev.com/c/7610180). Remoção de inclusõesbuild/branding_buildflags.hdesnecessárias dos arquivos//chrome(crrev.com/c/7595125, Bug: 40318405). Removemos a lógicaBUILDFLAG(IS_FUCHSIA)de//chrome, exceto no ChromeDriver (crrev.com/c/5485913, Bug: 41481724). - Segurança de memória (spanificação): resolvemos marcadores
UNSAFE_TODOem 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
WebViewpara evitar que ele seja descartado prematuramente (crrev.com/c/7257074, Bug: 468228355). - Segurança: adicionamos uma verificação de cabeçalho
Originpara conexões WebSocket recebidas ao servidor HTTP do ChromeDriver, evitando possível sequestro entre origens (crrev.com/c/7538400, Bug: 478783560). - Teste: movemos
testWebviewDetactedDuringClickpara 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
- Padrões C++: renomeamos
base::DictValueebase::ListValuepara os equivalentes modernos (base::Value::Dictebase::Value::List) em//chrome(crrev.com/c/7515855, crrev.com/c/7514475, Bug: 478100525). Substituição de usos debase::Contains()porstd::ranges::contains()(crrev.com/c/7461026, Bug: 470391351). Migração destd::setestd::unordered_setparabase::fixed_flat_setquando apropriado (crrev.com/c/7521991, Bug: 473916362). Refatoração das chamadasbase::JSONReader::Readque não especificavam opções de análise (crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Substituímos várias chamadasbase::JSONWriter::Write()porbase::WriteJson()(crrev.com/c/6969134, crrev.com/c/6929101, Bug: 443929217). Limpeza do pedido#include(crrev.com/c/7366868). Migração das referências de bugs em comentários para usar IDs do Buganizer em vez de IDs do Monorail (crrev.com/c/7528268, Bug: 321899722). Renomeação das flags de buildIS_OZONE_*comoSUPPORTS_OZONE_*para fins de esclarecimento (crrev.com/c/7535923). - Segurança de memória (spanificação): substituição do uso de ponteiros não seguros por
base::spanembase/strings/utf_string_conversion_utils.cc(crrev.com/c/7496410, Bug: 439964610, Bug: 40284755). Mais usos debase::Fileforam transformados em intervalos nos testes de//chrome(crrev.com/c/7489592, Bug: 435317390). Substituição dememsetpor inicialização agregada em//chrome(crrev.com/c/6875520, Bug: 435317390). Os#pragma allow_unsafe_buffersrestantes foram convertidos em marcadoresUNSAFE_TODO(crrev.com/c/7132241, Bug: 409340989). - Pré-inicialização do DSE: ativamos o recurso
DSEPrewarmnofieldtrial_testing_config.jsonpara macOS e Windows, já que a instabilidade relacionada ao teste do ChromeDriver foi resolvida (crrev.com/c/7489009, relançamento crrev.com/c/7002185 após a reversão crrev.com/c/7452344). (Observação: essa nova versão foi revertida novamente devido ao aumento dos tempos de execução de teste no Windows (crrev.com/c/7517985, Bug: 478888140)). - Diagnóstico: adicionamos o rastreamento da localização do autor da chamada aos eventos de rastreamento
WaitableEventeConditionVariablepara melhorar a capacidade de depuração (crrev.com/c/7487755, Bug: 476408124).
ChromeDriver 145
Novos recursos
- Teste: atualizamos a estrutura de teste
run_py_tests.pypara aceitar testes de string determinísticos de vários tamanhos (por exemplo, 53, 101 e 501 caracteres) segmentando elementosinput,textareaecontenteditable. Isso oferece cobertura de regressão, garantindo que nenhum caractere seja descartado durante operações longas desend_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
testClientHintsDeviceNameIPhoneXetestClientHintsDeviceNameIPadao 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()parastd::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 parastd::string_viewpara evitar alocações de string desnecessárias ao usarsubstr()(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 legadosBodyAsStringCallbackDeprecatednos usos deSimpleURLLoaderporBodyAsStringCallback, que utilizastd::optionalem vez destd::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
SetPermissionpara 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 comostorage-accessque 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
WebViewImplprincipal é 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.hem arquivos//chrome.cc, reforçando o uso decallback.hquando os callbacks são realmente utilizados (crrev.com/c/7200285, Bug: 40318405). Movemoslogging::LoggingSettingsdebase/logging.hpara o próprio cabeçalhobase/logging/logging_settings.hpara 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 debase::HexEncodepara obase::HexEncodeLowermais recente (crrev.com/c/7103100, Bug: 456472080). - Segurança de memória (spanificação): migramos
WriteToPipeeWriteToPipeNoBestEffortnos testes de unidadePipeBuilderePipeConnectionpara aceitarbase::span, corrigindo o uso não seguro de buffer (crrev.com/c/7090293, Bug: 455758227). Conversão de#pragma allow_unsafe_buffersem todo o arquivo para macrosUNSAFE_TODO()granulares emchrome/(crrev.com/c/7132241, Bug: 409340989). EncurtamosIOBuffer->span().first()paraIOBuffer->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
WaitForConditionpara uma sincronização mais confiável (crrev.com/c/6978928, Bug: 42321861). - Pré-aquecimento do DSE: desativamos o recurso
Prewarmno 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.hporscoped_refptr.hem cabeçalhos//chromeem que apenas o ponteiro inteligente é usado, melhorando a eficiência da compilação (crrev.com/c/7080753, Bug: 40245294). Migração dos acessadoresGURLpara as variantesGet*(por exemplo,GetSpec()em vez despec()) 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.ccusandoADD_FAILURE()(crrev.com/c/6998270). Adição de um teste de regressão paracrbug.com/413382905(crrev.com/c/6879417).
ChromeDriver 142
Novos recursos
- Diagnóstico: adicionamos o status
TERMINATION_STATUS_EVICTED_FOR_MEMORYpara 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 omoz:processIDdo 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
CheckAppInstalledem versões legadas do Android (anteriores ao Android 11) em que a flag--user curnão é compatível com o gerenciador de pacotes (crrev.com/c/6785949, Bug: 433885051). - Teste: correção de um bug em que
IgnoreDuplicateNavssubstituía incorretamente as chaves de recursos padrão no ChromeDriver. O recurso foi desativado para sessões do ChromeDriver, e a lógicaSwitches::SetFromSwitchesfoi 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 porbase::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) embase::JSONReader::Readebase::JSONReader::ReadAndReturnValueWithError(crrev.com/c/6990988, crrev.com/c/6980533, Bug: 446188265). Removemos os pragmas#pragma allow_unsafe_buffersem todo o arquivo após esforços manuais de spanificação (crrev.com/c/6778035, Bug: 409340989). Uso limpo da macroLazyInstancecom vazamento (crrev.com/c/6781377, Bug: 432815283). Incluímos cabeçalhos ausentes parahttp_response_headers.hvia 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, adicionandoCHECKs não fatais quando os parâmetros de tamanho eram considerados redundantes (crrev.com/c/6734592, Bug: 431824299). - Teste: desativamos temporariamente
testDoesntCrashOnClosingBrowserFromAsyncScriptno 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/testGN (crrev.com/c/6789277, Bug: 40760278). - FedCM: introduzimos uma função
ShouldShowAccountsPassiveDialogemIdentityDialogControllerpara 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.setPrewarmingAllowedao 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 recursoDSEPrewarmemfieldtrial_testing_config.jsonpara 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
WebLayersem suporte no código Android (crrev.com/c/6792520, Bug: 40272607).
ChromeDriver 141
Novos recursos
- Teste: adicionamos suporte à flag
--enable-per-test-tracingarun_wpt_tests.py, correspondendo ao comportamento derun_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
memsetpotencialmente não seguras pela inicialização agregada padrão do C++ (instance = {}) emchrome/para evitar o bypass de construtores e garantir a segurança da memória (crrev.com/c/6875520, Bug: 435317390). Adicionamos as diretivas#includeausentes para//base/time/time.hvia 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 prefixodevtools://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:hiddenimposto pelos ancestrais. Isso alinha o cálculo com a especificação do WebDriver e outros cenáriosPerformActions(crrev.com/c/6735230, Bug: 42322257). - Android: corrigimos a função
CheckAppInstalledem versões mais antigas do Android (antes do Android 11), em que a flag--user curpara o gerenciador de pacotes não é compatível (crrev.com/c/6785949, Bug: 433885051). - Teste: corrigimos a instabilidade no pacote de testes
chromedriver_py_testscausada pelo recursoDSEPrewarm. 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
ShouldShowAccountsPassiveDialogaoIdentityDialogController(parte do FedCM), o que causou uma regressão (crrev.com/c/6780413, Bug: 425801332).
Mudanças e refatorações internas
- Padrões C++: adicionamos
std::vector#includes ausentes usando o Include What You Use (IWYU) (crrev.com/c/6652818, Bug: 40216326). Remoção de inclusões supérfluas degurl.h(crrev.com/c/6578272) e<queue>(crrev.com/c/6570349, Bug: 40318405) em cabeçalhos//chrome. Foi resolvido o problemaIWYUparaNOTIMPLEMENTED()em//chrome(crrev.com/c/6655452, Bug: 41493641). - Segurança de memória (spanificação): executamos a ferramenta automatizada de spanificação de ponteiros em builds do Linux, atualizando o código para usar intervalos quando os tamanhos são conhecidos (crrev.com/c/6734592, Bug: 431824299). Remoção de pragmas
#pragma allow_unsafe_buffersem todo o arquivo emchrome/após a conclusão da migração (crrev.com/c/6778035, Bug: 409340989). Exclusão de destinoschrome/testdo aviso-Wexit-time-destructorspara permitir a ativação global do aviso (crrev.com/c/6736532, Bug: 40031409, Bug: 430332953). Limpeza de usos com vazamento deLazyInstanceem//chrome(crrev.com/c/6781377, Bug: 432815283). - Limpeza: removemos a flag da CLI
--debug-bidi-mapperporque a transição para executar o BiDi Mapper em um destino oculto foi concluída e está estável (crrev.com/c/6672011, Bug: 408992812). - Limpeza: removemos as referências restantes ao projeto
WebLayersem suporte (crrev.com/c/6792520, Bug: 40272607). Formatação automática de arquivos//chrome/testGN para encurtar referências de destino (crrev.com/c/6789277, Bug: 40760278). - Teste: adicionamos um teste de aceitação para verificar a correção do problema
PerformActionspointerMove(crrev.com/c/6648646, Bug: 42322257). - Teste: comentamos o segmento de criação de driver paralelo do teste
testBrowserWithUsedUserDataDir(e registramos um bug de rastreamento) porque ele causava falhas no macOS relacionadas ao bloqueio exclusivo ao usarchrome-headless-shell(crrev.com/c/6470455, Bug: 411407649, Bug: 380903149). - Teste: atualizamos o wrapper
run_cwt_chromedriver.pypara iOS para oferecer suporte ao argumento--platform-type(crrev.com/c/6771517, Bug: 427548014). - PROPRIETÁRIOS: removemos
nvitkovdo arquivochrome/test/chromedriver/OWNERS(crrev.com/c/6771413).
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()porstd::string_viewem//chrome/test(crrev.com/c/6628089, Bug: 422940464). Incluímosbase/strings/string_view_util.hondebase::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
//chromeao incluir explicitamente<vector>(crrev.com/c/6652818),base/notimplemented.h(e removerbase/notreached.hquando 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 debase/debug/stack_trace.h(crrev.com/c/6622838). - Teste: portou a opção
--driver-loggingpararun_wpt_tests.py, permitindo que o script despeje o ChromeDriver e o navegadorstderrmesmo 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 janelaheadless-shell(crrev.com/c/6621336, Bug: 42323661). - Teste: corrigimos
run_wpt_tests.py --stablepara 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.pyao impedir que destinosandroid_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
localStateeprefsao executar o ChromeDriver em dispositivos Android. Isso depende do ADB e exige uma flaguser-data-dirpersonalizada. 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
kTargetDetachede à tentativa de acessar umWebViewinválido (crrev.com/c/6538867, Bug: 410599467). - Teste de desempenho: corrigimos o executor de testes
crossbenchem bots de pinpoint do Windows que tentavam localizar o binário do ChromeDriver usando um caminho../Release_x64obsoleto quando--browser=release_x64era 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::OnReadDuringHandshakeeWebSocket::OnReadDuringOpenporbase::span, resolvendo avisos deunsafe-buffer-usage(crrev.com/c/6557346, Bug: 354307328). Removemos pragmas#pragma allow_unsafe_buffersdesnecessários emchrome/test/chromedriverque 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çalhoschrome/, 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
RSAPrivateKeyparacrypto::PrivateKeyeSHA256HashStringparacrypto::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
OwnContributionEstimateaos 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
ClearDisplayFeaturesem 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-mapperpara 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:channelse 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
PdfOopifestá desativado) vazassem para a lista de destinos de nível superior. A lógica de filtragem foi expandida para excluir corretamente esses destinos prefixados comchrome-extension://(crrev.com/c/6383500, Bug: 396611138).
Mudanças e refatorações internas
- Padrões C++: a mudança para usar
std::string_viewem nomes de arquivos emLogMessagee 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::GetVarem//chromepara usar a API de retornostd::optionalem 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.hpara um cabeçalhowindows_handle_util.hdedicado para evitar problemas de dependência circular (crrev.com/c/6418805, Bug: 406023316). - Teste: adicionamos um gerenciador de domínio
Browserespecífico do Android e implementamos a APIBrowser.getWindowForTargetpara 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-diremtestBrowserWithUsedUserDataDirao executar emchrome-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
ExtensionManifestV2Unsupportedestá 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
catapulte atualização dos arquivospydepsassociados e referênciasdevil_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
quitGracefullyque força o ChromeDriver a tentar interromper o navegador normalmente (usandoBrowser.closeou SIGTERM) em vez doSIGKILLpadrão. Isso dá aos depuradores, como orr, 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 --wrappergerando 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 quandoargssão processados como chaves (crrev.com/c/6271108, Bug: 339644807). - Teste: ativamos a tradução por preferência em
TranslateEnabledTestpara oferecer suporte a um ambiente de teste em que o ChromeDriver gerencia o processo do navegador e ignora a nova restrição--remote-debugging-portquando--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
PdfOopifestava desativado. O filtro foi expandido para incluir o prefixochrome-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 statusconnection refusedao segmentar apps do Chrome empacotados (crrev.com/c/6317161, Bug: 396622746).
Mudanças e refatorações internas
- Padrões de C++: reenvio da mudança que usa
std::string_viewpara nomes de arquivos emLogMessagee eventos de rastreamento, melhorando a compatibilidade com estruturas de registro em Rust que não garantem strings terminadas em nulo (crrev.com/c/6387020, reenvio de crrev.com/c/5765705 após a reversão crrev.com/c/6383699 e outra reversão crrev.com/c/6395097). - Padrões C++: substituímos chamadas
base::Value::Clone()redundantes para otimizar o desempenho (crrev.com/c/6361818). Suprimimos outros avisos-Wunsafe-buffers-in-libc-callsem arquivos específicos do Windows para limpar a saída do build (crrev.com/c/6369920, Bug: 390223051). - Extensões: revertemos a adição da entrada
fieldtrial_testing_config.jsonpara a faseExtensionManifestV2Unsupporteddevido a um problema (crrev.com/c/6397497, revertendo crrev.com/c/6358257, Bug: 367395349, Bug: 406523920). - Documentação: melhoria na documentação de teste do ChromeDriver específica para Android (crrev.com/c/6354040).
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_LACROSe dados de teste relacionados) dechrome/test/porque o Lacros está sendo descontinuado, padronizando oIS_CHROMEOS(crrev.com/c/6284446, Bug: 354842935). - Limpeza: removemos todos os rastros do utilitário
md5sumapós a substituição pordevil_util, limpando dependências de build legadas (crrev.com/c/6309939, Bug: 397452007). - Padrões C++: removemos o namespace
chrome::deResultCodeeIsNormalResultCode(), 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_boundno ChromeDriver usandostd::ranges::lower_bound(crrev.com/c/6223172, Bug: 392116519). Suprimidos avisos deunsafe_libc_callpara 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 destd::to_arraycomoconstexprpara 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çãonav-tracking-mitigationse é 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çaschromium-bidiupstream. A propriedade legadachannelnão é mais permitida (crrev.com/c/6179410). - Windows: adicionamos um recurso de versão ao binário
chromedriver.exeno 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
DCHECKembase::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 limitesUnicodeStringem vez de verificações simples de comprimentostd::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_shellparaheadless_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
- Padrões C++: substituímos os usos de
base::rangesporstd::rangespadrão (crrev.com/c/6200893, crrev.com/c/6177197, Bug: 386918226). Reescrevemos os padrõesb ? "true" : "false"para usarbase::ToString(bool)sempre que possível (crrev.com/c/6165810, Bug: 335797528). A funçãoStringPrintfNonConstexpr()não segura foi removida e substituída por alternativas mais seguras de formatação de strings (crrev.com/c/6149756). Substituímos a aritmética de ponteiros (+ std::size) por iteradoresbegin/endpadrão para resolver avisos de buffer não seguros (crrev.com/c/6217045, Bug: 392116519). - Limpeza: removemos a flag de recurso
FedCmIdpSigninStatuse a flag de tempo de execução dela (crrev.com/c/6111321, Bug: 381211734). Observação: uma tentativa de remoção anterior foi revertida crrev.com/c/6082405 devido a falhas.
ChromeDriver 133
Novos recursos
- Arquitetura: refatoração do ChromeDriver para oferecer suporte à arquitetura de várias páginas (MPArch) e destinos de guias. O
WebViewImplagora se conecta a destinos de guias viaAutoAttach. 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 capacidadeenable_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 URLchrome-extension://eram incluídas incorretamente como destinos de extensão. A seleção foi revertida para apenastype=background_page(crrev.com/c/6093588, Bug: 383141569). MovemosenableExtensionTargetspara 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 comandosbeforeunloadsem 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?testcausava uma paralisação. A heurística destinada a identificar uma nova janela sem resposta (baseURL==about:blankedocumentURL!=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 erroTimeoutpadrão (crrev.com/c/6012427, Bug: 42323825). - Diagnóstico: encaminhamos o erro
kTargetCrasheddiretamente porNavigationTracker. 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 usandoSendCommandem vez dePostCommandquando efeitos colaterais imediatos são esperados (crrev.com/c/6054137) e substituindo a dependência de efeitos imediatos deExecuteScriptpor 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
Printno scriptlog_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 destd::listparabase::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::arrayemchrome/como parte do esforço mais amplo para resolver avisos-Wunsafe-buffer-usage(crrev.com/c/6043879, Bug: 378069401). Uso estrito desize_tem funções de extensão (crrev.com/c/6026238, crrev.com/c/6020621). - Teste: o
{ref,crash}testsde tela cheia foi enviado de volta parawpt_internal/, já que agora otestdriveré compatível com eles (crrev.com/c/6088404). - Teste: corrigimos
wptrunnerpara 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-directorycorretamente (crrev.com/c/6014940, Bug: 374199289, Bug: 355218109). - Teste: adicionamos o teste de integração
testBrowserCrashWhileWaitingForEventspara 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_shellcombinados 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
repeateretry-limitaos testes de integração do ChromeDriver, mapeando-os para os argumentos padrãoisolated-script-test-repeateisolated-script-test-launcher-retry-limit(crrev.com/c/5938195, Bug: 374681919). Para testes executados localmente (não CI), oretry-limitpadrão foi mudado para 0 (crrev.com/c/5953326, Bug: 374681919). - WebSockets: implementamos
WebSocketConnectione classes relacionadas emEmbeddedTestServer, permitindo que testes relacionados a WebSocket migrem doSpawnedTestServer. 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
kTargetDetachedintroduzido em refatorações anteriores (crrev.com/c/5934524, Bug: 42323264). - Estabilidade: foi corrigida uma falha intermitente no teste de integração
testClickNavigateRemoteToLocalno Mac ARM64 ao resolver uma disputa (crrev.com/c/5975526, Bug: 375971185). - Navegação: corrigimos os comandos
GoBackeGoForward, que falhavam sePage.getNavigationHistoryfosse 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
ScriptTimeoutse 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çãoCLEARdo Selenium Atoms), sejam propagados com precisão para o usuário (crrev.com/c/5937893, Bug: 42323409). Melhoria no tratamento de erros emGetElementTagNamepara 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 docss/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-bidipara 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-shelllegado não está mais presente no Chrome (crrev.com/c/5961602, Bug: 42323387). - Limpeza: removemos o arquivo
java_tests.txtnã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-dirou 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
- BiDi: aumentamos a dependência do mapeador
chromium-bidipara a v0.8.0, incorporando as atualizações mais recentes do protocolo e correções de bugs (crrev.com/c/5899240, crrev.com/c/5865478, Bug: 4226). - Acesso ao DOM: adicionamos suporte para raízes shadow fechadas no comando
GetElementShadowRoot. Antes, esse comando retornava um erroNoSuchShadowRootao tentar acessar uma raiz de sombra fechada (crrev.com/c/5923865, Bug: 372834222). - Acesso ao DOM: implementamos suporte para identificadores de janela e frame, permitindo que referências a janelas ou frames (incluindo iframes OOP) sejam retornadas de scripts executados para dereferencing posterior (crrev.com/c/5890437, crrev.com/c/5923555, Bug: 366272556, Bug: 40229283).
- WebAuthn: expansão da API de automação WebAuthn para incluir propriedades
userNameeuserDisplayName(crrev.com/c/5905423, Bug: 367915823).
Correções de bugs
- Entrada: corrigimos uma disputa com cliques do mouse em frames remotos roteando eventos do mouse para o ancestral de mesma origem mais alto do frame de destino, em vez de simplesmente enviá-los para o frame mais alto (crrev.com/c/5836968, Bug: 42323535).
- Entrada: corrigimos o formato do carimbo de data/hora enviado com o comando
Input.dispatchTouchEventde milissegundos para segundos, corrigindo falhas no teste de eventos de ponteiro WPT (crrev.com/c/5924253, Bug: 360918166). - Testes: reativamos vários testes do ChromeDriver no Mac (crrev.com/c/5923569, crrev.com/c/5922823, crrev.com/c/5921444, crrev.com/c/5920851, crrev.com/c/5921442) e no Windows (crrev.com/c/5923955) porque as falhas de instabilidade associadas não são mais reproduzíveis.
Mudanças e refatorações internas
- Segurança de memória (spanificação): substituímos o uso de ponteiros não seguros por
base::spanemnet::HttpUtil(crrev.com/c/5854420) e migramosbase::File::WriteAtCurrentPos()para o equivalente baseado em intervalo (crrev.com/c/5818972). Reescrevemos os valores de ponteiro do mapa (por exemplo, emstd::map,std::unordered_map) pararaw_ptr(crrev.com/c/5867189, Bug: 329428315). - Padrões C++: substituímos as macros de atributo Abseil (
ABSL_ATTRIBUTE_*) por macrosbase/padrão (crrev.com/c/5852373). Evitamos cópias não intencionais substituindo strings/vetores de passagem por valor porstd::string_viewou referências constantes quando apropriado e removemos qualificadoresconstsoltos de argumentosstd::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
- BiDi: aumentamos a dependência do BiDi Mapper, buscando as atualizações de protocolo e correções de bugs mais recentes do upstream
chromium-bidi(crrev.com/c/5850570, relanding crrev.com/c/5837065 após o revert crrev.com/c/5840080; crrev.com/c/5717956, Bug: 4226). - BiDi: o ChromeDriver foi atualizado para fornecer
unhandledPromptBehaviordiretamente ao Mapper usando o comandosession.newao inicializar uma sessão BiDi. Isso conclui a migração deMapperOptions(crrev.com/c/5682934, crrev.com/c/5766077, Bug: 42323841, Bug: 356371297). - Teste: adicionamos suporte ao argumento
--chromedriverao scriptbisect-builds.pypara builds de computador, permitindo que o script faça o download e use automaticamente a versão correta do ChromeDriver durante as biseções para testes dependentes do WebDriver/ChromeDriver (crrev.com/c/5861048, Bug: 352344089).
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
wptrunnersubstituindo a stringchromecodificada pelo produto real usado e ocultando o artefatocommanddetalhado 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.testClickNavigateLocalToLocalinstável no Mac (crrev.com/c/5806894, Bug: 361521805) e os testesChromeDriverTest.testClickElement*ObscuredByScrollBarinstá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.newao BiDi Mapper, permitindo que ele processe recursos diretamente. Esta é a primeira etapa para removerMapperOptions(crrev.com/c/5741432, Bug: 356371297). Observação: uma mudança relacionada crrev.com/c/5754093 que fornecia ounhandledPromptBehaviorprocessado 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
ScopedTestMV2Enablercomo 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
Setnos resultados da execução do script do WebDriver Classic, evitando loops infinitos e tolerando substituições deArray.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
- BiDi: aumentamos a dependência do BiDi Mapper para incluir as correções de bugs e atualizações de protocolo mais recentes do
chromium-bidi(crrev.com/c/5756587, crrev.com/c/5717956, Bug: 4226). - Segurança de memória (spanificação): substituiu o uso de buffer não seguro em
WebSocketFrameParser::Decode,MaskWebSocketFramePayloadeWriteWebSocketFrameHeaderporbase::span(crrev.com/c/5764863, crrev.com/c/5743019, crrev.com/c/5722108, Bug: 40284755, Bug: 354307327). Adição de#pragma allow_unsafe_buffersemchrome/*como preparação para outras correções (crrev.com/c/5717950, Bug: 40285824) e conversão de macrosUNSAFE_BUFFERS()não conformes paraUNSAFE_TODO()(crrev.com/c/5786346). Reescrevemos os camposbase::spanparabase::raw_span(crrev.com/c/5515096, Bug: 332587642). - Padrões de C++: removemos o uso de matrizes de comprimento variável (VLAs, na sigla em inglês) perigosas na base de código marcando explicitamente os comprimentos de matriz como
constexpr(crrev.com/c/5738737, Bug: 349656479). Incluídos os cabeçalhos<unordered_map>necessários que foram extraídos transitivamente (crrev.com/c/5792881). - Arquitetura: desvinculamos a implementação do
WebSocketEncoderrevertendo a migração paralisada para//services/network/public/cpp/servere centralizando a lógica novamente em//net/serverpara garantir atualizações consistentes (crrev.com/c/5768214, Bug: 40205564).
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-portao 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
ExecuteUpdateVirtualSensorpara usarSendCommand()em vez deSendCommandAndGetResult(), já que o comandosetSensorOverrideReadingsCDP 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
- BiDi: aumentamos a dependência do BiDi Mapper, trazendo os recursos mais recentes do protocolo, correções de bugs e atualizações de expectativa do WPT do projeto upstream
chromium-bidi(crrev.com/c/5717956, crrev.com/c/5644823, crrev.com/c/5630727, crrev.com/c/5615110, crrev.com/c/5614670, Bug: 4226, Bug: 347863537, Bug: 324436866). - Substituímos o uso do método
GrowableIOBuffer::StartOfBufferdescontinuado porspan, melhorando a segurança da memória ao eliminar ponteiros não verificados (crrev.com/c/5706088, Bug: 329476354). - Adicionamos o Span aos métodos
DecodedeWebSocketFrameParserpara melhorar a segurança da memória (crrev.com/c/5722108, Bug: 354307327). - Limpeza dos remanescentes de
absl::optionalcom a remoção de cabeçalhos Abseil obsoletos e migração parastd::optional(crrev.com/c/5691505, Bug: 40242125). - O ChromeDriver foi alterado para processar todos os tipos de destino desconhecidos (incluindo
shared_storage_worklet) comoWebViewInfo::kOtherem vez de tratá-los como erros. Isso permite que o Chrome introduza novos tipos de destino sem interromper imediatamente os WPTs (crrev.com/c/5680542, crrev.com/c/5679146, Bug: 42323839). - Adição de uma meta de instalação para o builder
linux-builder-perfgerar binários sem símbolos para arquivos bisect e configuração de builders pinpoint para aceitaradditional_compile_targetsvariados (crrev.com/c/5668198, Bug: 344643694). - O
run_performance_tests.pyfoi atualizado para encontrar e transmitir o local do ChromeDriver paracrossbenchdurante builds de desempenho (crrev.com/c/5624538, Bug: 338629299). - Implementamos a dependência
crossbench(crrev.com/c/5681849). - Marcados
FedCmSpecificTest.testClickErrorMoreDetailseFedCmSpecificTest.testClickErrorGotItcomo instáveis no Mac (crrev.com/c/5704320, crrev.com/c/5677564, Bug: 352821422, Bug: 346530330). - Desativamos o teste instável
BidiTest.testFocusInFirstTab(crrev.com/c/5676686, Bug: 350916212).
ChromeDriver 127
Correções de bugs
- Estabilidade: correção de uma falha do ChromeDriver que ocorria quando um comando
target.detachFromTarget(ou eventotarget.detachedFromTarget) era recebido enquanto o cliente do DevTools processava ativamente outros comandos, evitando o lançamento prematuro dos objetosWebVieweDevToolsClient(crrev.com/c/5527584, Bug: 339773537). - Estabilidade: corrigimos um problema em que o comando
Switch To Windowpodia 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
DCHECKquando 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.getTreeretornar 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.htmlWPT em que uma caixa de diálogo era marcada incorretamente como fechada. Agora, o estado só é atualizado se a operaçãoselectAccountfor concluída (crrev.com/c/5398379, Bug: 331237776). - Teste: corrigimos uma falha do
DCHECKdurante a análise JSON quando um caractere atingia exatamente o limitekExtendedASCIIStart(crrev.com/c/5565276, Bug: 40284755). - Teste: corrigimos o teste
scrollend-event-fires-to-iframe-window.htmlWPT 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.pynão consegue localizar o binário do navegador (crrev.com/c/5604204, Bug: 4781).
Mudanças e refatorações internas
- BiDi: atualizamos a dependência do BiDi Mapper, acompanhando as atualizações mais recentes do protocolo e as correções de bugs (crrev.com/c/5614670, crrev.com/c/5593796, crrev.com/c/5537892, crrev.com/c/5471839, Bug: 4226).
- Substituímos os usos de
NOTREACHED()porNOTREACHED_IN_MIGRATION()no diretóriochrome/para tornarNOTREACHED()estritamente[[noreturn]](crrev.com/c/5539004, Bug: 40580068). - Ativamos a geração de
THIRD_PARTY_NOTICES.txtpara o ChromeDriver usando a ferramentalicenses.pypara obedecer aos requisitos de distribuição (crrev.com/c/5596355, Bug: 4777). - Removemos o suporte a
run_wpt_tests.pyparacontent_shell, já que a cobertura de WPT do Chromium está fazendo a transição completa paraheadless_shell+ ChromeDriver (crrev.com/c/5589930). Reorganizamos as chaveswptrunnerpara serem específicas do incorporador e acomodar essa mudança sem impacto funcional (crrev.com/c/5589793, Bug: 338412391). - Consolidamos a lógica de detecção e processamento de caixas de diálogo JavaScript movendo-a de
JavaScriptDialogManagerdiretamente paraDevToolsClientImpl, eliminando a classe de gerenciador separada para simplificar os testes e o raciocínio (crrev.com/c/5545630, Bug: 4757). - O
PureBidiTest.testBrowsingContextTreeIsNotEmptyfoi desativado no Mac devido à instabilidade (crrev.com/c/5588665, Bug: 343891977). - Atualizamos as expectativas do WPT BiDi para considerar as atualizações recentes do Mapper (crrev.com/c/5615110, Bug: 4226, Bug: 324436866).
- Adição de testes de unidade para
WebView::SendBidiCommandeBidiTrackerpara aumentar a cobertura de código (crrev.com/c/5588400, Bug: 341048786, Bug: 1503101).
ChromeDriver 126
Novos recursos
- BiDi: o ChromeDriver foi atualizado para fornecer a chave
--disable-background-timer-throttlingao 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 comobidi messagespara análise, embora oBidiTrackeros 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
NoSuchExecutionContextnã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 errorem vez de um erroinvalid selectorquando 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 operationpadrã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ãokSessionNotCreatedquando 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
kNoSuchExecutionContextnão padrão ao executar comandos de janela (crrev.com/c/5483606, Bug: 4379). - Clássico: removemos o código de erro
kForbiddennã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-bidiupstream (crrev.com/c/5508600, Bug: 4761).
Mudanças e refatorações internas
- BiDi: aumentamos a dependência do BiDi Mapper, trazendo os recursos e correções de bugs mais recentes do projeto
chromium-bidiupstream (crrev.com/c/5490428, crrev.com/c/5471839, crrev.com/c/5509316, crrev.com/c/5458234, Bug: 4226). Observação: um aumento do mapeador foi brevemente revertido por um jardineiro e depois refeito (crrev.com/c/5374839, crrev.com/c/5374366). - Substituímos os usos de
base::StringPieceporstd::string_viewem//chrome(crrev.com/c/5467746, Bug: 40506050). - O uso de
std::to_string()em//chromefoi removido e substituído porbase::NumberToString()oubase::FormatNumber()(crrev.com/c/5505593, Bug: 335672557). - A compatibilidade com a chave
--remote-debugging-addressno modo headless antigo foi removida porque o acesso remoto desprotegido ao Chrome DevTools Protocol foi considerado muito perigoso (crrev.com/c/5512634, Bug: 327558594). - Remoção das regras de build do Fuchsia de
//chrome, exceto para o ChromeDriver (crrev.com/c/5473870, Bug: 41481724). - Migração de referências legadas de
TODO(crbug.com/...)em toda a base de código para o novo formato de ID do rastreador de problemas (TODO(b/...)) (crrev.com/c/5492605, crrev.com/c/5486477, crrev.com/c/5461380, Bug: 321899722). - Desativamos os testes do WebAuthn (autenticador) no Mac (sem interface e
chromedriver_py_tests) devido a um bug complexo, desbloqueando a atualização de bots para o macOS 14 (crrev.com/c/5525435, crrev.com/c/5518820, Bug: 329130177). - Desativamos os criadores de WPT para
content_shelldevido a dificuldades na execução de WPTs com o ChromeDriver e o Content Shell juntos (crrev.com/c/5512439, Bug: 40214293). - Reimplementamos uma mudança que atualiza
focus-navigationWPTs para usarShift+Tabviatest_driver.action_sequence()para navegação para trás. Correção de um bug emfocus-utils.jsem que o código de tecla errado (E050em vez deE008) era usado para a tecla Shift (crrev.com/c/5467843, revertendo crrev.com/c/5466531, relançando crrev.com/c/5463903, Bug: 40597271). - Adição de
crossbenchechromedriveràs metas de build de desempenho (crrev.com/c/5521874, Bug: 338627700).
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
idde umDoubleparabase::Value. Isso garante que oidseja 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
selectAccountfor concluído. Isso resolve falhas de teste quandoselectAccounté chamado sem um seletor de contas esperado (crrev.com/c/5398379, Bug: 331237776). Evitamos chamarfedcm_get_and_select_first_accountquando 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.htmlWPT combinando sequências de ações e usando o documento do frame principal como a origem da açãopointerUp, impedindo que o ChromeDriver envie incorretamente eventospointerUpsimultâneos entre frames (crrev.com/c/5402096, Bug: 325981758). - Teste: correção do
wptrunnerpara encaminhar corretamente a saídastderr(incluindo os registros do navegador gravados ao usar--enable-chrome-logs) para o artefatostderrem vez decrash_log, e movimentação dos erros de plataforma (que contêm o stack trace do navegador) paracrash_log(crrev.com/c/5437023, Bug: 41494889). - Teste: corrigimos
wptrunnerpara 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
StackTracedo 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
testTakeLargeElementViewportScreenshotinstável no Mac (especificamentemac-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
chromeexata usada para executar cada teste do WPT do registrochromedriverem um artefato do ResultDB chamadocommand. Isso facilita a depuração manual comrun_blink_wptserve.py(crrev.com/c/5441189, Bug: 41494889). - Dependências: removemos
Closureda lista de dependênciasselenium-atomse, consequentemente, dos avisos de terceiros do ChromeDriver (crrev.com/c/5424804, Bug: 4226). - Dependências: foram removidas dependências não usadas em
dynamic_annotationsno repositório base (crrev.com/c/3398908, Bug: 1282422). - Formatação: aplicamos a nova configuração
clang-formata 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
BiDiMapperantes 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
defaultBackupEligibilityedefaultBackupStateao comando "Adicionar autenticador virtual", ebackupEligibilityebackupStateao comando "Adicionar credencial" (crrev.com/c/5297117, Bug: 40945430). - Teste: adicionamos suporte ao argumento de linha de comando
--failfastaos 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
SetRPHRegistrationModedo webdriver usando as APIstestdriver-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::SetWindowBoundsao 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-direm vez de--data-pathao especificar o diretório de dados paracontent_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::optionalporstd::optionalem toda a base de código após a transição deabsl::optionalpara um alias de tipo (crrev.com/c/5296147, Bug: 1500249). - Cobertura estendida de
MiraclePtr(raw_ptr) para outros contêineres padrão, incluindostd::list,std::unordered_set,base::flat_set,std::stackestd::queue(crrev.com/c/5306923, Bug: 325302189). - Convertido
WriteBigEndian()para usar conversões de bytesbase::numericsouBigEndianWriter(que agora aceitabase::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.jse 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.pypara gerar créditos para dependênciasBiDiMappere atualizando a invocaçãolicenses.pypara depender estritamente do READMEselenium-atomsem 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 umJavaScriptErrorpara 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.htmlpara 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 quetest_driver.set_permission(...)estava transmitindo incorretamentefalseem vez denullou umWindowProxy, 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
ChromeImpleDevToolsClientImpl, 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 recentestd::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
#includeparabase/...para usar""em vez de<>por consistência (crrev.com/c/5237376, Bug: 1500249). - Migração de todos os arquivos
DIR_METADATAemchrome/test/para o Buganizer (crrev.com/c/5284119, Bug: 1518875). - Impedimos que o wptrunner criasse um arquivo
-local ao transmitir-vvvremovendo a chavechromedriver --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-portemrun_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()eRandBytes()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
acceptInsecureCertsao 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/handlespodia 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
dialogtyperetorne dados desatualizados se a caixa de diálogo for fechada externamente (por exemplo, viaAbortController.abort) (crrev.com/c/5067504, Bug: 1506292). - FedCM: removemos o prefixo do fornecedor do comando
ClickDialogButtonporque 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.enableredundantes enviadas de cadaDevToolsEventListener, já queDevToolsClientImpljá processa isso por destino (crrev.com/c/5088789, Bug: 4600). - Mudamos todos os builders do Wptrunner para
content_shellpara 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_roleemcontent_shellforam ignorados porque ainda não foram implementados, evitando falhas deTypeError(crrev.com/c/5189678, Bug: 1517744). - Refatoração para usar flags
IS_OZONE_{X11, WAYLAND}independentes de plataforma em vez deOZONE_PLATFORM_*(crrev.com/c/5086329, Bug: 1500494). - Aumentamos a dependência
selenium-atomspara 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
originpara 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 deStringPrintf()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
ScopedTempDirWithRetryao 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) nochrome-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-namee executar condicionalmente conjuntos de testes específicos (crrev.com/c/4995189, crrev.com/c/4989442, Bug: 4358).
Correções de bugs
- Estabilidade: inicializamos o
KeyboardLayoutEnginepadrão comoStubKeyboardLayoutEnginepara evitar falhas do ChromeDriver causadas por um hitDCHECKemKeyboardLayoutEngineManager::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-shellretornava uma lista de destinos vazia, impedindo a criação da sessão, ao anexar o argumentodata:,à linha de comando do navegador quando o nome dele erachrome-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
dialogtypee outros comandos não retornem dados desatualizados se a caixa de diálogo for fechada externamente (por exemplo, viaAbortController.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-shellno Windows (crrev.com/c/5027594, Bug: 4358). - Teste: enfraquecemos asserções excessivamente estritas em
testElementRegionTestpara 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
- BiDi: atualização da dependência do BiDi Mapper (crrev.com/c/4994305, Bug: 4226).
- Reversão do uso de
IS_OZONE_{X11, WAYLAND}em favor deOZONE_PLATFORM_*devido a um bug (crrev.com/c/5086571, revertendo crrev.com/c/5083096, Bug: 1500494). - Migrado o código em
commands_unittest.ccpara usarbase::BindLambdaForTestingem vez debase::Passed, que foi descontinuado (crrev.com/c/5078589, Bug: 1326449). - Refatoração de
session.newpara extrair o processamento de recursos de modelo (por exemplo,testName,binary,browserName) em um método dedicado e garantir que o comando respeite os recursos de maneira semelhante ao comando clássico (crrev.com/c/5004665, crrev.com/c/5001510, Bug: 4358, Bug: 4610). - Remoção do uso do cabeçalho
base/strings/string_piece_forward.hdescontinuado (crrev.com/c/5008994, Bug: 691162). - Preparo para a transição de
net::IOBufferpara uma classe não proprietária usandonet::IOBufferWithSizepara casos de propriedade (crrev.com/c/4996470, Bug: 1493389). - Introduzido e usado
base::RandBytesAsVector()para evitar o armazenamento de valores binários em strings (crrev.com/c/5018451). - Desativamos vários testes de integração do Python com falhas consistentes no Mac para evitar que eles causem builds verdes devido à exoneração da análise do LUCI (crrev.com/c/4998771, Bug: 1486604, Bug: 1486520, Bug: 1486474, Bug: 1481915).
- Renomeamos
webdriver_tests_suite(ewpt_tests_suite) parachrome_wpt_testspara padronizar as convenções de nomenclatura do conjunto WPT nos criadores de testes do Linux (crrev.com/c/5014293, Bug: 1474702). - Readequação do comando
ConfirmIdpLogindo webdriver do FedCM para um comandoClickDialogButtonmais extensível que aceita um parâmetroDialogButton(crrev.com/c/5003255, Bug: 1499341). - Atualizamos a dependência
crossbenchcom várias correções e recursos, incluindo melhor análise de tipo de driver, stubs de rede e suporte para iOS (crrev.com/c/5009937). - Adição do
#include <string>ausente aochrome_finder.hpara conformidade com IWYU (crrev.com/c/4994605, Bug: 957519).
ChromeDriver 120
Novos recursos
- BiDi: adicionamos suporte aos comandos
session.newesession.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.statusPureBiDi, 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.pdle 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_shellpara manipulação de sensores virtuais viatestdriver.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-shellse 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
CLOSEquando um for recebido da extremidade remota (crrev.com/c/4931500, Bug: 4499). - Permissões: expôs
options.disclaim_responsibilitycomo 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
testReturnFrameElementpara verificar o comportamento do ChromeDriver em relação ao tratamento dewindow.frameElementcomo 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::Timeforam renomeadas para serem mais descritivas (por exemplo,FromDoubleT()paraFromSecondsSinceUnixEpoch()) (crrev.com/c/4956111). - Refatoração do construtor
net::StringIOBuffere das instanciaçõesIOBufferpara 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::StrCatpor+quando aplicável e usandobase::AppendHexEncodedByte()(crrev.com/c/4963465, crrev.com/c/4977165). - Renomeação de
DIR_SOURCE_ROOTparaDIR_SRC_TEST_DATA_ROOTem todos os testes de//chrome*para fins de esclarecimento (crrev.com/c/4916045, Bug: 1264897). - Desativação de testes instáveis de
PureBidiTestem 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
confirmidpsignincom 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
MapeSet. Agora eles são serializados corretamente comoObjectem vez deCollection, já que não têm uma propriedadelength(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
SigninparaLogin(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
~NOTFOUNDpor^NOTFOUNDem 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
//urlporstd::string_viewpara melhorar a segurança e a conveniência (crrev.com/c/4897456). - A transição do utilitário
generateWebDriverValuepara 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.htmlem testeswebdriver_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_pageem vez deother(crrev.com/c/4842093). - Renomeamos o destino de build do WPT
chrome_wptparachrome_wpt_testspor consistência e removemos o destino redundantewebdriver_wpt_tests(crrev.com/c/4847474, Bug: 1474702). - Migração de
run_py_tests.pyda bibliotecaoptparsedescontinuada paraargparse(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
crossbenchcom 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
debuggerAddressestava 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
platformNamepadrã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
MockSocketpara preferirbase::span<>em vez de ponteiros brutos para melhorar a segurança (crrev.com/c/4832086). - Remoção de usos descontinuados de
base::raw_ptrebase::raw_refem favor das formas não qualificadasraw_ptreraw_refpor 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.pye 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 aoclient_hints.hpara 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 namespacebase::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
- Comunicação por pipes: mudamos o modo de comunicação padrão entre o ChromeDriver e o Chrome de WebSockets para pipes (
--remote-debugging-in-pipee--remote-debugging-out-pipe) em todas as plataformas compatíveis, incluindo o Windows (crrev.com/c/4634299, crrev.com/c/4628834, crrev.com/c/4635378, Bug: 3480). - BiDi: atualizamos a dependência do BiDi Mapper (crrev.com/c/4670516, Bug: 4226).
Correções de bugs
- Estabilidade: correção de um acesso a ponteiro nulo que causava falhas no ChromeDriver, o que resultava em erros de
ConnectionRefuseddurante a execução de testes (crrev.com/c/4675633, Bug: 1457101). - Navegação: foi corrigido um problema em que os erros
NoSuchExecutionContexteNoSuchWindowdo 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 douserAgentno 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
SessionNotCreatedpadrã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
wptrunneroficial em vez dorun_webdriver_tests.pypersonalizado, 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
ChromeLaunchere classes relacionadas para oferecer suporte à transição para pipes, diminuindo o acoplamento comDevToolsHttpCliente 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, paraBrowserInfo.is_headless_shellpara fins de esclarecimento (crrev.com/c/4650452, Bug: 4358). - Substituímos vários métodos
base::Valueobsoletos pelos equivalentes modernosbase::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.hem favor de utilitários de string de base mais seguros e implementamos novas instalações parabase::expected(crrev.com/c/4749459, crrev.com/c/4755226). - Implementados comandos de automação
get_fedcm_dialog_titleeselect_fedcm_accountemTestDriverpara 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/chromedriverconvertidos 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
wptrunnerpara 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
ChromeImplpara eliminar a dependência deDevToolsHttpCliente redução do uso deSyncWebSocketFactoryeBrowserInfoem 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
WaitForConditionporassertTruepara indicar claramente quando ocorrem tempos limite (crrev.com/c/4590211). - Marcados avisos
raw_ptrinstáveis e pendentes conhecidos em testes de unidadelinux-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
%sno 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
UnknownErrorem vez do erroNoSuchElementpadrã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.mobileseja verdadeira se a stringuserAgentcontiver "Mobile" (crrev.com/c/4507142, Bug: 4243). - Emulação de dispositivos móveis: migramos substituições de
DeviceMetricspara usar o comandoEmulation.setDeviceMetricsOverridedo CDP em vez do equivalente de domínioPagedescontinuado (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
Connectdescontinuado deDevToolsClientpara 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::Dictem vez debase::Valuee substituição de métodos descontinuados, comoFindStringKey(),SetKey()eSetByDottedPath()(crrev.com/c/4529788, crrev.com/c/4522701, crrev.com/c/4515800, crrev.com/c/4507150). - Passamos a usar funções
string_util.hem vez de[w]ctype.hpara 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 deweb_view.h(crrev.com/c/4518363, Bug: 3376). - Aplicamos uma renomeação automática de
base::raw_ptrpararaw_ptrpara seguir as preferências do guia de estilo (crrev.com/c/4476651).
ChromeDriver 114
Novos recursos
- Clássico: transmitiu informações de
MobileDeviceparaMobileEmulationOverrideManagerpara 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
DCHECKemDevToolsClientImpl::SendCommandInternalpara 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
WebViewImple 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::Valuev2, substituindo métodos descontinuados comoValue::SetPath(),Value::SetStringPath()ebase::ListValue(crrev.com/c/4452309, crrev.com/c/4431420, crrev.com/c/4422897, crrev.com/c/4377520). - Substituímos todos os usos de
base::GUIDporbase::Uuidpara 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
configem vez do atributosrcdescontinuado (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>) parastd::strlenemweb_view_impl.ccpara 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-originsadicionado
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-originsadicionado
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-originsadicionado
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-originsadicionado
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
NavigationTrackernã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