0

Selenium IDE を使用して、2 つのテスト ケースを含むテスト スイートを作成しました。スイートを Java/JUnit4/WebDriver としてエクスポートしました。

最初のテスト ケースでは、ユーザーがサイトにログインし、一致が見つかった後にメンバーを検索し、メンバーのプロファイルにアクセスできるようにします。

2 番目のテスト ケース: メンバー プロファイルで、[寄付] リンクをクリックして誓約を追加します。

テスト スイートは Selenium IDE では正常に動作しますが、スイートを実行すると Eclipse でハングアップします。Eclipse での動作、最初のテスト ケースは問題なく実行され、2 番目のケースでは新しいブラウザーが開き、システムにログイン (ユーザー名とパスワードを入力) が必要です。

どうすればいいのか知りたいので、ユーザーにログインを求めずにテスト ケース 2 を続行します。あなたの助けとアドバイスに感謝します。

これが私のテスト スイート コードで、3 つのセクションに分かれています (サイトが内部サイトであるため、uid と pd を削除しました)。

-test suite runner file: searchDonorAddPledge   
-test case1: searchDonorSuzy.class    
-test case2: DonorAddPledge.class

障害追跡メッセージ:

  1. org.openqa.selenium.StaleElementReferenceException: 要素がキャッシュに見つかりません - おそらくページが検索されてから変更されました コマンドの実行時間またはタイムアウト: 30.12 秒

  2. 原因: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: 要素がキャッシュに見つかりません - おそらくページが検索されてから変更されました ビルド情報: バージョン: '2.31.0'、リビジョン: '1bd294d'、時間: '2013-02-27 20:53:56'

ランナーファイル:

import org.junit.runners.Suite;
import org.junit.runner.RunWith;

      @RunWith(Suite.class)
      @Suite.SuiteClasses
      (
        {
            SearchDonorSuzy.class,
            DonorAddPledge.class      
        }
      )

      public class searchDonorAddPledge { }

テストケース 1 コード:

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class SearchDonorSuzy 
{
    private WebDriver driver;
      private String baseUrl;
      private boolean acceptNextAlert = true;
      private StringBuffer verificationErrors = new StringBuffer();

      @Before
      public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "https://jlaustin.tcheetah.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }

      @Test
      public void testSearchDonorSuzy() throws Exception {
        // set overall speed of the test case
        // ERROR: Caught exception [ERROR: Unsupported command [setSpeed | 4000 | ]]
        driver.get(baseUrl + "/?html=openid");
        driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();
        driver.findElement(By.id("edit-name")).clear();
        driver.findElement(By.id("edit-name")).sendKeys("username");
        driver.findElement(By.id("edit-pass")).clear();
        driver.findElement(By.id("edit-pass")).sendKeys("password");
        driver.findElement(By.id("edit-submit")).click();
        driver.findElement(By.id("cmp_admin")).click();
        driver.findElement(By.id("quicksearch_anchor")).click();
        driver.findElement(By.cssSelector("img[alt=\"Member\"]")).click();
        driver.findElement(By.id("search_name")).clear();
        driver.findElement(By.id("search_name")).sendKeys("suzy");
        driver.findElement(By.cssSelector("input[type=\"image\"]")).click();
        driver.findElement(By.linkText("Balagia, Suzy")).click();
      }

      @After
      public void tearDown() throws Exception {
        //driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
          fail(verificationErrorString);
        }
      }

      private boolean isElementPresent(By by) {
        try {
          driver.findElement(by);
          return true;
        } catch (NoSuchElementException e) {
          return false;
        }
      }

      private String closeAlertAndGetItsText() 
      {
        try 
        {
          Alert alert = driver.switchTo().alert();
          if (acceptNextAlert) 
          {
            alert.accept();
          } 
          else 
          {
            alert.dismiss();
          }
          return alert.getText();
        } 
        finally 
        {
          acceptNextAlert = true;
        }
      }

}

testcase2 コード:

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class DonorAddPledge 
{
      private WebDriver driver;
      private String baseUrl;
      private boolean acceptNextAlert = true;
      private StringBuffer verificationErrors = new StringBuffer();

      @Before
      public void setUp() throws Exception 
      {
        driver = new FirefoxDriver();
        baseUrl = "https://jlaustin.tcheetah.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
      }

      @Test
      public void testDonorAddPledge() throws Exception 
      {
        driver.get(baseUrl + "/?nd=db_member&account_id=942&nowwritestate=i1110536420226242");

        driver.findElement(By.xpath("(//a[contains(text(),'Donor')])[2]")).click();
        driver.findElement(By.linkText("Campaign Manager")).click();
        new Select(driver.findElement(By.id("campaign_id"))).selectByVisibleText("A Christmas Affair 2012");
        driver.findElement(By.xpath("//a[contains(text(),'Add\n            pledge')]")).click();
        driver.findElement(By.id("pledge_amount")).clear();
        driver.findElement(By.id("pledge_amount")).sendKeys("100.00");
        driver.findElement(By.id("pledge_notes")).clear();
        driver.findElement(By.id("pledge_notes")).sendKeys("test pledge");
        driver.findElement(By.cssSelector("input[type=\"image\"]")).click();
      }

      @After
      public void tearDown() throws Exception 
      {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) 
        {
          fail(verificationErrorString);
        }
      }

      private boolean isElementPresent(By by) 
      {
        try 
        {
          driver.findElement(by);
          return true;
        } 
        catch (NoSuchElementException e) 
        {
          return false;
        }
      }

      private String closeAlertAndGetItsText() 
      {
        try 
        {
          Alert alert = driver.switchTo().alert();
          if (acceptNextAlert) 
          {
            alert.accept();
          } 
          else 
          {
            alert.dismiss();
          }
          return alert.getText();
        }

        finally 
        {
          acceptNextAlert = true;
        }
      }

}
4

1 に答える 1