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/如果函數失敗,隱式等待將不會立即執行,它只會爲重試設置默認的等待時間。明確的等待是當您需要比默認(隱含)等待時間更長的等待時間時。否則,他們的工作幾乎相同。 –

相關問題