簡體   English   中英

Selenium Webdriver:如何驗證是否已加載所需的網頁

[英]Selenium Webdriver: How to verify that the required webpage is loaded

我正在使用Selenium Webdriver自動化網站測試。 在每個事件之后,我都想驗證操作是否成功。 最好的方法是什么。 例如,當用戶單擊“登錄”按鈕時,如何驗證是否加載了正確的網頁? 我現在正在做的一件事是獲取結果頁面的來源,並在該頁面中查找特定單詞以進行確認。 如果有這些單詞,我認為頁面確實已加載。 但是我不認為這是個好方法。

如果您使用的是Selenium Webdriver,則顯然可以使用WebDriver.findElement(通過locator)檢查某個對象是否僅會在您等待的頁面中。 例如,要檢查登錄是否成功,可以驗證頁面中是否存在“注銷”對象。

您無需獲取源代碼並檢查所需的文本。 如果“注銷”按鈕的ID為“注銷”,則下面的行適用於您...

assertTrue(driver.findElements(By.id("Logout").length > 0);

您應該測試常規功能,而不是樣式等正確。 與手動測試相比,自動測試的優勢在於,使用多種不同的數據測試事物確實非常容易,並且更改后可以快速重新運行它們。 通常,您假設頁面看上去正確,並且只想在多種不同情況下測試程序邏輯。

例如,如果您登錄,請檢查用戶是否顯示為已登錄狀態,並假設正確顯示了首頁(通過一些僅顯示在首頁上特定位置的文本)。 或者,如果您有一個多頁表單,其中用戶正在輸入各種數據,請檢查摘要頁是否正確列出了所有內容。

不要檢查獲取整個源並進行解析,而是應該使用類似以下內容的東西:

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

import org.junit.*;

public class LoginTest extends WebDriverTest /* This would be your own superclass, from which you inherit the WebDriver instance. */ {
  private User user = new User();

  @Before
  public void setUp() {
    user.setName("Test Tommy");
    user.setPassword("foobar");
  }

  @Test
  public void userNameShouldBeShownAfterLogin() {
    // Go to your page and do the login, then wait for page load.

    String userNameOnPage = driver.findElement(By.id("usernameAfterLogin"));
    assertThat(userNameOnPage, is(equalTo(user.getName())));
  }
}

頁面對象設計模式將是滿足您需求的理想選擇。 這一切都帶來了其他好處。 引用此鏈接https://code.google.com/p/selenium/wiki/PageObjects

暫無
暫無

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

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