Até o meu google Chrome não ter sido atualizado para a versão 78, meu código funcionou bem. Também atualizei o chromedriver para a versão 78.0.3904.70. Portanto, não consigo mais encontrar o WebElement com id = 'plugin' usando o Selenium WebDriver e Java:
<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&reanudar=&>
</div>
</html>
Fora essa parte, meus testes estão funcionando bem. Eu nunca tive um problema semelhante antes. Também tentei encontrar o WebElement id = 'content', mas estou recebendo o mesmo erro.
WebDriverWait wait = new WebDriverWait (driver, 90);
WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin")));
scrollvalid.sendKeys(Keys.PAGE_DOWN); scrollvalid.sendKeys(Keys.PAGE_DOWN);
Meu script de automação deve encontrar o elemento PDF e rolar a página para baixo. Em vez disso, estou recebendo este erro: org.openqa.selenium.TimeoutException: Tempo limite esgotado após 90 segundos, aguardando a visibilidade do elemento localizado por By.id: plugin
Alguém está enfrentando um problema semelhante? Desde já, obrigado.
Thread.sleep
lugares onde havia esperas implícitas ou explícitas antes desta atualização.Respostas:
Corri para o mesmo problema.
Aparentemente, o Chrome se atualiza automaticamente. Ontem (29 de outubro de 1919) Meu ChromeDriver começou a reclamar que não era compatível com o Chrome 78. Atualizei o driver para a versão 78. Comecei a obter exceções aleatórias org.openqa.selenium.NoSuchElementException ao tentar encontrar elementos que confirmei que estavam lá. Os findElement [s] também funcionam quando eu usei pontos de interrupção. Eu também tentei esperas implícitas, com apenas sucesso limitado.
Tentei a solução ChromeOption do zsbappa, mas sem alegria.
O Google torna difícil obter versões antigas do Chrome, mas eu encontrei a versão 76 em https://www.neowin.net/news/google-chrome-76-offline-installer/ . Cuidado, o instalador online instala a versão mais recente. Voltei ao motorista para 76 e está tudo bem. Todos os meus testes de selênio estão funcionando novamente.
Minha conclusão é que o Chrome 78 e seu driver associado têm uma condição de corrida em que o Selenium tenta interrogar a página da web antes que ela seja concluída.
fonte
Nós enfrentamos um problema semelhante com o Chrome 78.0.3904.7, Chromedriver 77/78, Python Selenium 3.141.0.
Em nossos testes automatizados do Python Selenium, vimos várias falhas em que parece que os cliques nos elementos não ocorreram. Ainda mais estranho, parece que o elemento se tornou ativo (como se estivesse prestes a ser clicado), mas o evento de clique real nunca ocorreu. Como resultado, trocas de página etc. não ocorrem, resultando em várias falhas a jusante.
Por um processo de rastreamento e erro, descobrimos que o uso da função .click () padrão agora não é confiável:
Mas o uso de cadeias de ação parece ser confiável:
Não está claro por que esse é o caso. As falhas começaram assim que atualizamos para o Chrome 78.0.3904.7. Estamos usando o Chromedriver 77.0.3865.90, mas os mesmos testes são confiáveis nas versões do Chrome 77.x, portanto, parece que algo está errado ou mudou no Chrome 78.
fonte
Adicionando o argumento a seguir, resolvi meu problema.
fonte
Eu enfrentei o mesmo problema ao tentar acessar uma guia dentro de um iframe, ele funcionava bem na versão 76. Agora que foi atualizado para 78, está falhando. Tentei esperas, esperas implícitas, durma, localize os elementos usando xpath, CSS, id, alterne contexto, role até a visualização, etc., sem sorte. Estou usando o Windows 10, 1809. Não sei se isso está acontecendo em outro sistema operacional.
Aqui está a pergunta que levantei:
Problema ao usar localizadores chromedriver 78.0.3904.70
fonte
Confirmei ontem que esse problema parece se manifestar apenas quando um elemento está contido em um iframe. Nesses casos, o iframe está localizado corretamente. No entanto, a tentativa de localizar um elemento da Web usando os objetos de espera do driver ou do driver da Web resultará em um
NoSuchElement
ouTimeoutException
respectivamente.Forneci à equipe do chromedriver um registro detalhado do driver do Chrome e eles estão trabalhando nisso.
ATUALIZAÇÃO : da edição 3223 do chromedriver
Basicamente, esse bug foi introduzido na v.77. Muitos de nós acabamos de perceber esse problema porque atualizamos da v.76 para .v78. A palavra é que eles estão direcionando uma correção para .v80 (não para a v. 79). Como solução alternativa, estou usando
Thread.sleep
o tempo que alterno para o iframe e quando tento localizar o componente. Esta solução alternativa funciona bem. Na verdade, você pode verificar isso sozinho executando o aplicativo no modo DEBUG. Ao pausar a execução (usando um ponto de interrupção), você notará que seu código original (sem suspensão) funciona bem.fonte
Por exemplo: você pode tentar usar essas palavras-chave!
fonte
Acabou sendo um problema com o Google Chrome, não com o chromedriver: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3211
fonte
Eu tive o mesmo problema.
Após a atualização automática do Chrome com a versão 78.0, meus scripts de teste automatizados estavam falhando. Atualizei o chromedriver para a versão 78, mas o driver ainda não conseguiu encontrar nenhum elemento da web. Depois disso, tentei com várias versões do chromedriver e, finalmente, meu problema foi resolvido com a versão 2.44 do chromedriver .
Esta versão pode ser encontrada em https://chromedriver.storage.googleapis.com/index.html?path=2.44/
fonte
Você pode gerenciar o pacote Nuget , excluir a unidade do Chrome e procurar o chrome, fazer o download da nova versão selenium.web.driver.ChromeDriver >> para jsaKamoto
aí você encontra a versão 78 do chrome.
fonte