0

我需要选中一个复选框以在输入字段中键入值。

当我选中该框时,该字段出现。所以我尝试了:

WebElement box = driver.findElement(By.id("Checkbox_input"));
box.click();
sleep(5);
// the input can't be detected
// so it throw a noSuchElement.
WebElement input = driver.findElement(By.id("PaymentAmount_input"));
input.sendKeys("12345");

我已经使用 isSelected() (在 之后click())来验证它是否被选中。

Assert.assertTrue(box.isSelected());

我发现了一些奇怪的东西。我在ePrepayment.click();之后写了

box.submit();

它之所以有效,是因为submit()看起来像刷新,所以我的输入出现了,但它不会删除其他输入中的所有值。

眼镜

sleep()方法

protected void sleep(int i) {
    driver.manage().timeouts().implicitlyWait(i, TimeUnit.SECONDS);
}

问题 :

有没有更好的方法来代替submit()复选框?

谢谢你,马可

4

2 回答 2

0

您的sleep()方法没有意义,因为这是对隐式等待的错误使用。更正确的方法是使用显式等待:

WebElement box = driver.findElement(By.id("Checkbox_input"));
box.click();
wait.until(ExpectedConditions.visibilityOfElemementLocated(By.id("PaymentAmount_input")));
WebElement input = driver.findElement(By.id("PaymentAmount_input"));
input.sendKeys("12345");

假设wait已经在某个地方正确启动,例如:

WebDriverWait wait = new WebDriverWait(driver, 5);
于 2013-04-10T14:54:52.123 回答
0

如果可能,共享您的元素 HTML。可能有类似onsubmit显示输入字段而不是onclick事件的东西。

于 2013-04-10T11:00:14.700 回答