0

我正在使用硒脚本,我正在使用显式等待。我有一个脚本,我有三种方法来调用IE,FireFox和Chrome浏览器。如何在TestNG框架中为多个浏览器编写脚本时声明显式等待?

我将一次为一个浏览器执行脚本。现在的问题是我应该如何声明等待(明确)。我可以看到以下两个选项。 1.在全局范围内创建WebDriverWait类的一个对象---在这种情况下,Web驱动程序抛出异常,因为没有为浏览器类创建对象(在本例中为FireFoxDriver())。 2.在任何方法中本地创建WebDriverWait类的对象 - 在这种情况下,等待可以很好地工作,但如果我不得不再次使用等待任何其他元素。它会要求你在本地再次创建WebDriverWait类的对象(这是我想避免的)。

总之。我只想在代码中创建WebDriverWait类的onle对象。我怎么能为下面提到的代码呢?

以下是代码..

公共类对{ 的webdriver驱动器;

@BeforeClass 
void InvokeFF() { 
    System.setProperty("webdriver.gecko.driver", 
      "C:/Users/Vinay/workspace_n/EGuru/drivers/geckodriver.exe"); 
    driver = new FirefoxDriver(); 
    // driver.get("http://seleniumpractise.blogspot.in/2016/08/bootstrap-dropdown-example-for-selenium.html"); 
    System.out.println("Firefox invoked"); 
    System.out.println("Firefox thread:" + Thread.currentThread().getId()); 
} 

@BeforeClass(enabled = false) 
void InvokeIE() { 
    System.setProperty("webdriver.ie.driver", 
      "C:/Users/Vinay/workspace_n/EGuru/drivers/IEDriverServer.exe"); 
    driver = new InternetExplorerDriver(); 
    System.out.println("Internet Explorer invoked"); 
    System.out.println("IE thread:" + Thread.currentThread().getId()); 
} 

@BeforeClass(enabled = false) 
void InvokeGC() { 
    System.setProperty("webdriver.chrome.driver", 
      "C:/Users/Vinay/workspace_n/EGuru/drivers/chromedriver.exe"); 
    driver = new ChromeDriver(); 
    // driver.get("http://www.seleniumeasy.com"); 
    System.out.println("Chrome invoked"); 
    System.out.println("Chrome thread:" + Thread.currentThread().getId()); 

} 

@Test 
void Auto() throws Exception { 
    WebDriverWait wait = new WebDriverWait(driver, 20); 
    driver.get("file:///C:/Users/Vinay/Desktop/Upload1.html"); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By 
      .xpath(".//*[@id='1']"))); 
    driver.findElement(By.xpath(".//*[@id='1']")).click(); 
    Runtime.getRuntime().exec("C:\\Users\\Vinay\\Desktop\\AutoUpload.exe"); 
} 

}

回答

0

我认为你在寻找什么是隐式的等待,没有一个明确的等待。这可以通过使用驱动程序创建后,下面的代码行(使用它需要驾驶者为准)

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

的10秒明显改变任何你想要的默认超时完成。

+0

隐式等待将使脚本在执行完每条指令/语句后等待10秒钟,并且它只能在脚本中声明一次。这会让我的脚本变慢。我希望明确地等待,只要我需要,就等待。 – iAutomate

+1

请参阅http://toolsqa.com/selenium-webdriver/implicit-explicit-n-fluent-wait/如果函数失败,隐式等待将不会立即执行,它只会为重试设置默认的等待时间。明确的等待是当您需要比默认(隐含)等待时间更长的等待时间时。否则,他们的工作几乎相同。 –

相关问题