簡體   English   中英

我想要一個方法,它可以等待頁面中的所有webelements加載到java(Selenium webdiver)

[英]i want a method which can will wait for all the webelements in a page to load in java(Selenium webdiver)

//I have used waits like 
Thread.sleep(2000);

要么

driver.manage().timeouts().pageLoad(100,TimeUnit.seconds);

要么

driver.manage().timeouts().explicitlywait(10,TimeUnit.seconds);

要么

WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.visibilityof(element));

我關心的是當在Grid中運行大量腳本時,由於等待問題,有些通過了一些失敗所以我想要一個可以處理這種場景的用戶定義方法,即一種等待頁面的所有元素加載的方法,這樣就可以了有效地使用顯示錯誤的方法,如“無法找到元素”或“無法單擊元素,其他元素將收到點擊”。 /

你永遠不應該使用計時器來等待你的頁面加載,因為你永遠不知道渲染速度有多快,那么在這種情況下我建議你2個方法:

  1. 使用selenium的waitFor方法,其中驅動程序將等待直到存在的元素存在,您可以設置默認等待的最大時間,默認為6秒。 對於這種方法,您需要知道哪個元素意味着頁面已完全加載

     waitFor(ExpectedConditions.presenceOfElementLocated(By.id("yourExpectedIdElement"))); 
  2. 如果您需要檢查所有JS代碼是否已加載,您還可以在document.ready()JS中添加一行,其中向主體添加隱藏元素,然后是您將在測試中等待的屬性。

     $document.ready(){ //Add a hidden element to the body } waitFor(ExpectedConditions.presenceOfElementLocated(By.id("createdElement"))); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM