java - Possível problema com o Chromedriver 78, o Selenium não consegue encontrar o elemento da Web do PDF aberto no Chrome




selenium-webdriver selenium-chromedriver (6)

Acabou sendo um problema com o Google Chrome, não com o chromedriver: bugs.chromium.org/p/chromedriver/issues/detail?id=3211

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&amp;reanudar=&amp;>
</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.


Adicionando o argumento a seguir, resolvi meu problema.

   ChromeOptions options = new ChromeOptions();
    options.addArguments("--disable-gpu");
    options.addArguments("--disable-extensions");
    options.setExperimentalOption("useAutomationExtension", false);
    options.addArguments("--window-size=1920,1080");
    options.merge(seleniumCapabilities);
    driver = new ChromeDriver(options);

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.


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é visualizar, 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


Por exemplo: você pode tentar usar essas palavras-chave!

1. implicit_wait=10
2. Sleep  10

Você pode gerenciar o pacote Nuget , excluir a unidade do Chrome e procurar o chrome, baixar a nova versão selenium.web.driver.ChromeDriver >> para jsaKamoto

aí você encontra a versão 78 do chrome.





selenium-chromedriver