Selenium get value of current implicit wait

前端 未结 5 1843
悲&欢浪女
悲&欢浪女 2021-01-17 15:50

I realize that Selenium has a default value for implicit waits, but how do I get this value if I change it? For example:

<         


        
5条回答
  •  猫巷女王i
    2021-01-17 16:11

    TL;DR - This is not a solution to get implicit waits. You cannot get the implicit wait in Java even today, without using a workaround like this.

    In 2020, selenium 3.141.59 still does not have a getter for any timeouts. The WebDriver interface has a nested interface Timeouts which does not define any getters. RemoteWebDriver, which is the parent of Chrome and Firefox drivers, implements the WebDriver interface and it does not add a getter for timeouts.

    RemoteWebDriver implements WebDriver.Timeouts, but it does not store the value of implicit timeout anywhere, as you can see from the code below.

    protected class RemoteTimeouts implements Timeouts {
    
      public Timeouts implicitlyWait(long time, TimeUnit unit) {
        execute(DriverCommand.SET_TIMEOUT, ImmutableMap.of(
            "implicit", TimeUnit.MILLISECONDS.convert(time, unit)));
        return this;
      }
    
      public Timeouts setScriptTimeout(long time, TimeUnit unit) {
        execute(DriverCommand.SET_TIMEOUT, ImmutableMap.of(
            "script", TimeUnit.MILLISECONDS.convert(time, unit)));
        return this;
      }
    
      public Timeouts pageLoadTimeout(long time, TimeUnit unit) {
        execute(DriverCommand.SET_TIMEOUT, ImmutableMap.of(
            "pageLoad", TimeUnit.MILLISECONDS.convert(time, unit)));
        return this;
      }
    } // timeouts class.
    

    The execute() method in the RemoteWebDriver takes the wait inside a Map of parameters, but it does not make that map or the wait settings accessible to us via a getter.

      protected Response execute(String driverCommand, Map parameters)
      //Open the source code to see why you can't make your own getter for implicitWait.
    

提交回复
热议问题