2016-11-22 74 views
0

我正在使用硒(Java)自動化一個Web應用程序,它使用Youtube進度條,顯示網頁頂部的頁面加載進度。我需要編寫一個等待函數,等待這個進度條到達並加載頁面。這些進度條沒有任何自己的ID。我如何編碼等待進度條完成加載?如何自動執行硒等待Youtube像步進酒吧

回答

1

YouTube的進度條具有在加載以下細節 -

<div id="progress" class="waiting" style="transition-duration: 900ms; width: 60%;"><dt></dt><dd></dd></div> 

隨着加載繼續width屬性值增加至100%。然後這個進度條從DOM中刪除(以及我無法在檢查部分找到它)。嘗試將網絡速度從Chrome開發人員工具中調整到最小,以便在DOM中查看這一點。

您可以在此進度div寬度屬性(需要自定義等待)或隱形或存在上設置顯式等待。取決於你使用自動化的語言。甚至使用javascriptexecutor自定義等待來運行jquery來檢查此元素。

0

首先這裏是我經常用來確定元素是否可見的一些方法。對不起,這些是在C#不是Java,但應該非常接近。

public void WaitForElementVisibile(IWebDriver driver, By selector) 
    { 
     var attempts = 0; 
     while (attempts < 2) 
     { 
      try 
      { 
       WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(90)); 
       wait.PollingInterval = TimeSpan.FromMilliseconds(300); 
       wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(selector)); 
       break; 
      } 
      catch (WebDriverException) 
      { 
       attempts++; 
      } 
     } 
     if (attempts >= 2) 
     { 
      TakeScreenshot(driver); 
      log.Error("Failed to located element " + selector.ToString() + " for " + Capabilities.BrowserName); 
      throw new NoSuchElementException("Cannot locate " + selector.ToString() + " for " + Capabilities.BrowserName); 
     } 
    } 

如果更換VisibilityOFAllElementsLocatedBy()InvisibilityOfElementLocated()將更改消息要等到一個元素是不可見的。

如果您對TakeScreenshot()方法感興趣,我也可以提供。

但希望使用類似上述方法的東西,您可以等待加載完成後出現的元素。也許有一些文字顯示「加載完成」或其他內容。

如果您提供Url以便我可以看到該頁面,我可以提供進一步的幫助。希望這可以幫助。