Home > database >  condition on wait not applying accordingly
condition on wait not applying accordingly

Time:07-22

I am using selenium java and i have applied explicit wait command on script , so here is the scenario the page is taking few mille seconds to load and internet speed on my office is too fast as a result script cant find element to be clickable , if i apply sleep.thread then it works but i dont want to use sleep so thats why my explicit wait is not working according to my needs not sure how to resolve this , i am sharing my console error message and script as well

ChromeOptions optionsBeta = new ChromeOptions();
             optionsBeta.setBinary("C:\\Program Files\\Google\\Chrome Beta\\Application\\chrome.exe");
             System.setProperty("webdriver.chrome.driver" , "./Driver/chromedriver.exe");
             driver = new ChromeDriver(optionsBeta);
            // WebDriverManager.chromedriver().setup();
             waits=new WebDriverWait (driver, Duration.ofSeconds(10));



 waits.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div[id='react-select-regionId--value'] div[class='Select-value']")));
               waits.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div[id='react-select-regionId--value'] div[class='Select-value']")));
               // Thread.sleep(500);
               driver.findElement(By.cssSelector("div[id='react-select-regionId--value'] div[class='Select-value']")).click();




FAILED: First_Test.Task_TestNG.CheckOutTest
org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element <div >...</div> is not clickable at point (746, 348). Other element would receive the click: <div >...</div>
  (Session info: chrome=104.0.5112.48)
Build info: version: '4.3.0', revision: 'a4995e2c09*'
System info: host: 'AWAIS-PC', ip: '192.168.1.62', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '18.0.1'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [2d991cd12a3008b98e6c0b82f0f7d750, clickElement {id=0ef92db0-9a11-4eed-8567-7a29f9098752}]
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 104.0.5112.48, chrome: {chromedriverVersion: 104.0.5112.29 (eff877e18f76..., userDataDir: C:\Users\WRP\AppData\Local\...}, goog:chromeOptions: {debuggerAddress: localhost:57616}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: WINDOWS, proxy: Proxy(), se:cdp: ws://localhost:57616/devtoo..., se:cdpVersion: 104.0.5112.48, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
Element: [[ChromeDriver: chrome on WINDOWS (2d991cd12a3008b98e6c0b82f0f7d750)] -> css selector: div[id='react-select-regionId--value'] div[class='Select-value']]
Session ID: 2d991cd12a3008b98e6c0b82f0f7d750
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)
    at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
    at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
    at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:184)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:167)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:142)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:569)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:257)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:78)
    at First_Test.Task_TestNG.CheckOutTest(Task_TestNG.java:144)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:577)
    at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
    at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
    at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
    at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
    at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:962)
    at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
    at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
    at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
    at org.testng.TestRunner.privateRun(TestRunner.java:806)
    at org.testng.TestRunner.run(TestRunner.java:601)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:433)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:427)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:387)
    at org.testng.SuiteRunner.run(SuiteRunner.java:330)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
    at org.testng.TestNG.runSuites(TestNG.java:1099)
    at org.testng.TestNG.run(TestNG.java:1067)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)


===============================================
    Default test
    Tests run: 1, Failures: 1, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1, Passes: 0, Failures: 1, Skips: 0
===============================================

[main] INFO org.testng.internal.Utils - [TestNG] Time taken by org.testng.internal.ExitCodeListener@43fda8d9: 0 ms

CodePudding user response:

The exception says clearly there is another overlaying element.

org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element <div >...</div> is not clickable at point (746, 348). Other element would receive the click: <div >...</div>

Instead of waiting on <div >...</div> to be clickable, wait to <div >...</div> be not visible.

CodePudding user response:

The error says that the click on the desired element was intercepted by some other element (loader). You should wait until the loader will disappeared.

waits.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("div[class='LoadingOverlay']")));

As result final code will be the next:

waits.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div[id='react-select-regionId--value'] div[class='Select-value']")));
waits.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("div[class='LoadingOverlay']")));
waits.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div[id='react-select-regionId--value'] div[class='Select-value']")));
driver.findElement(By.cssSelector("div[id='react-select-regionId--value'] div[class='Select-value']")).click();
  • Related