Je fais des tests avec Selenium, et les tests doivent se connecter à un système. Cette connexion prend 17 secondes pour se produire pleinement. Le système doit attendre la fin, sinon l'ensemble du test échoue.Sélénium n'attendant pas la page à charger
J'ai essayé plusieurs façons de le faire, mais toutes échouent.
Code D'abord, je l'ai essayé était le suivant:
driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
Quand je l'utilise que, même si je le dis d'attendre pendant 100 secondes, je reçois un délai d'attente 2 (ce qui est presque deux bonnes minutes!) secondes plus tard avec cette stacktrace.
org.openqa.selenium.WebDriverException: timeouts
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'CMTCLX62137', ip: '53.19.227.206', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_31'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{moz:profile=C:\Users\ALEX\AppData\Local\Temp\rust_mozprofile.Z2KJE568nWB8, rotatable=false, timeouts={implicit=0.0, pageLoad=300000.0, script=30000.0}, pageLoadStrategy=normal, moz:headless=false, platform=ANY, proxy=Proxy(manual, http=localhost), specificationLevel=0.0, moz:accessibilityChecks=false, acceptInsecureCerts=true, browserVersion=56.0, platformVersion=6.1, moz:processID=21116.0, browserName=firefox, javascriptEnabled=true, platformName=windows_nt}]
Session ID: b2dca4a5-623a-4311-ad07-6444785dbcaf
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:150)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:115)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:45)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteTimeouts.implicitlyWait(RemoteWebDriver.java:868)
Un autre code que j'ai essayé:
new WebDriverWait(driver, 100).until(webDriver -> ((JavascriptExecutor) webDriver).executeScript(
"return document.readyState").equals("complete"));
Avec cela, il ne fonctionne tout simplement pas attendre et je reçois un
org.openqa.selenium.NoSuchElementException: Unable to locate element
La seule façon pour mon test au travail est en utilisant un Thread.sleep(), mais c'est une option vraiment mauvaise, car parfois il charge plus vite que prévu et parfois il échoue encore parce qu'il prend plus de 17s.
Toute autre option à attendre le chargement complet de la page?
Le sélénium attend toujours que la page soit chargée. S'il vous plaît envoyer tout le code qui provoque l'erreur afin que nous puissions enquêter. – Buaban