我使用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: Timed out after 30秒。找不到元素的原因: org.openqa.selenium.NoSuchElementException: element不可用
发布于 2013-10-11 17:23:12
我在尝试单击复选框时也遇到了同样的错误。我通过用标签<span>而不是<input>点击element解决了这个问题。
例如,在您的示例中可以找到这样的元素(比您的复选框高一级的元素):
@FindBy(xpath = ".//*[@type='checkbox']/..")发布于 2013-06-14 22:37:32
我不能复制你的问题:
@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);
}
}同时使用FindBy:org.openqa.selenium.support.FindBy和net.thucydides.core.annotations.findby.FindBy
由于所有其他元素都可以工作,因此请确保:
,
iframe里。https://stackoverflow.com/questions/17083114
复制相似问题