有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java刷新复选框,Selenium 2

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

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

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()

谢谢你,马可


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    您的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);