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()方法は意味がありません。これは Implicit Waits の間違った使い方だからです。より正しいアプローチは、明示的な待機を使用することです。

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 に答える