2

私は新しいテスターです。テスト スクリプトに関して 2 つの質問がありました。テスト スクリプトを Selenium ide からエクスポートし (Junit4 webdriver にエクスポート)、それを eclipse indigo に貼り付けます。しかし、テスト スクリプトを実行すると、それまでしか実行されません。
driver.findElement(By.name("j_idt61")).click();

そのコード行の後、実際にはログアウト リンクをクリックする行がもう 1 行あります。driver.findElement(By.linkText("Logout")).click();

しかし、セレンはlinkText " Logout"を見つけることができないようです..

これは私のコードです

package admin ;

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 login {
  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 = " here I put my website URL";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testLogin() throws Exception {
    driver.get(baseUrl + "/admin/pages/login.xhtml");

    driver.findElement(By.id("j_username")).click();
    driver.findElement(By.id("j_username")).clear();
    driver.findElement(By.id("j_username")).sendKeys("sasa");
    driver.findElement(By.id("j_password")).click();
    driver.findElement(By.id("j_password")).clear();
    driver.findElement(By.id("j_password")).sendKeys("sasasamsudin");
    driver.findElement(By.name("j_idt61")).click();
    driver.findElement(By.linkText("Logout")).click();
  }

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

 public boolean isElementPresent(By id) {
    try {
      driver.findElements(By.id("J_idt16:J_idt30"));
      return true;
    } catch (org.openqa.selenium.NoSuchElementException e) {
      return false;
    }
  }

 public boolean isElementVisible(By id)
 {

     return driver.findElement(By.id("J_idt16:J_idt30")).isDisplayed();

 }

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

誰か助けてください.私は仕事を始めたばかりで、この自動化テストが正しく機能する必要があります..ありがとう:)

4

3 に答える 3

0

私は自分でこの問題に遭遇しました。Selenium IDE 内で正常に動作する一連のテストをエクスポートしましたが、エクスポートすると動作しなくなったようです。私は Java ではなく Python で作業しているため、私のコード例については申し訳ありません。だから私の場合、私は持っていた

driver.find_element_by_link_text("Logout").click()

私はこれに変更しました

driver.find_element_by_xpath("//a[contains(text(),'Logout')]").click()

同じことは、「By.LINK_TEXT」を「By.XPATH」に置き換えてから xpath ベースのパラメーターでパラメーターを更新するだけの場合にも適用されます。

それが役立つことを願っています。

Mr-F

于 2014-06-23T11:09:32.000 に答える
0

次のいずれかの問題が発生している可能性があります。

1-linkText= "logout" のコンポーネントはまだ有効になっていないため、コンポーネントが有効になるまで待つ必要があります

2-クラス名やリンクテキストを使用することはお勧めしません...ページの他の場所に存在する可能性があるため、By.IDまたはBy.XPathを使用することをお勧めします

3-コンポーネント「LogOut」は、前のコンポーネントと同じフレームにある必要があります

幸運を :-)

于 2014-06-23T11:30:15.487 に答える