Java 刷新复选框,Selenium 2

Java 刷新复选框,Selenium 2,java,selenium-webdriver,Java,Selenium Webdriver,我需要选中一个复选框,在输入字段中键入值 选中该复选框时,该字段将显示。所以我试着: 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_

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

选中该复选框时,该字段将显示。所以我试着:

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()(就在
单击()之后)来验证是否选中了它

Assert.assertTrue(box.isSelected());
我发现了一些奇怪的东西。。我在
ePrepayment之后写下它。单击()

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

规格

sleep()
方法

问题:

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


谢谢你,Marco

如果可能的话,分享你的元素HTML。可能有类似于
onsubmit
show输入字段而不是
onclick
事件的内容。

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

WebElement-box=driver.findElement(By.id(“复选框输入”);
box.click();
wait.till(ExpectedConditions.visibilityofelementlocated(By.id(“PaymentAmount\u输入”));
WebElement输入=driver.findElement(By.id(“PaymentAmount_输入”);
输入。发送键(“12345”);
假设
wait
已在以下位置正确启动:

WebDriverWait wait=newwebdriverwait(驱动程序,5);

我无法像您那样定义
等待
。它说:“构造函数WebDriverWait(WebDriver,int)未定义”,它说我需要像这样编写:
newwebdriverwait(Object,WebDriver,long)我的坏,我导入了错误的包。我会像你说的那样尝试,我拒绝你。我开始阅读评论,并打算提到它可能与进口有关,一旦你获得状态,请告诉我。
box.submit();
protected void sleep(int i) {
    driver.manage().timeouts().implicitlyWait(i, TimeUnit.SECONDS);
}