2

私は Selenium Webdriver + Thucydides を使用しています。チェックボックス(任意の状態:isEnabled()、isDisplayed()、isSelected())を使用しようとすると、エラーが発生します。ID、名前、xpath など、さまざまなロケーターを試しました。チェックボックスはページソースで利用できます。ページ上の他のすべての要素は正しく機能します。DisplayedElementLocatorFactory を使用しています。

私のロケーター:

    @FindBy(id = "remember")
//  @FindBy(xpath = ".//*[@type='checkbox']")
//  @FindBy(name = "_remember_me")
    protected WebElement rememberMeCheckbox;

チェックボックスの HTML ソース:

<label for="remember" class="remember"><div class="checker" id="uniform-remember"><span><input type="checkbox" value="1" name="_remember_me" id="remember" /></span></div>Remember me</label>

私の機能:

public void isLoginFormLoadedCorrectly()
{
        String pageSource = driver.getPageSource();
        System.out.println(pageSource);

        String errorMessage = "";

        if (!loginInput.isDisplayed())
            errorMessage += "Username field is not displayed or not found\r\n";
        if (!passwordInput.isDisplayed())
            errorMessage += "Password field is not displayed or not found\r\n";
        if (!submitButton.isDisplayed())
            errorMessage += "Submit button is not displayed or not found\r\n";
        if (!passwordRecoveryLink.isDisplayed())
            errorMessage += "Password recovery link is not displayed or not found\r\n";
        if (!rememberMeCheckbox.isDisplayed())
            errorMessage += "Remember me check-box is not displayed or not found\r\n";
    //    if (rememberMeCheckbox.isSelected())
    //        errorMessage += "Remember me check-box is selected\r\n";

        assertThat(errorMessage, errorMessage.equals(""), is(true));
    }

エラー: net.thucydides.core.webdriver.WebdriverAssertionError: org.openqa.selenium.NoSuchElementException: 30 秒後にタイムアウトしました。要素が見つかりません 原因: org.openqa.selenium.NoSuchElementException: 30 秒後にタイムアウトしました。要素が見つかりません原因: org.openqa.selenium.NoSuchElementException: 要素が使用できません

4

2 に答える 2

0

問題を再現できません:

@RunWith(ThucydidesRunner.class)
public class VerificationTest {

    @Managed
    public WebDriver driver;

    @ManagedPages
    public Pages pages;

    @Test
    public void testCheckbox(){
        CheckBoxPage pg = pages.get(CheckBoxPage.class);
        pg.openAt("http://www.echoecho.com/htmlforms09.htm");

        assertTrue("checkbox is displayed", pg.ckbxElement.isDisplayed());
        assertTrue("checkbox is selected", pg.ckbxElement.isSelected());    
    }
}

どこ

public class CheckBoxPage extends PageObject{

    @FindBy(css = ".table8 input:checked")
    public WebElement ckbxElement;

    public CheckBoxPage(WebDriver driver) {
        super(driver);
    }

}

s FindBy:とorg.openqa.selenium.support.FindBynet.thucydides.core.annotations.findby.FindBy

他のすべての要素が機能するため、次のことを確認してください。

  1. にはありませんiframe
  2. htmは正しいです
于 2013-06-14T14:37:31.793 に答える