while循环应该在元素makePaymentButton
未启用/显示时结束,但不会。
错误:线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法找到id == makePaymentButton的元素
while(driver.findElement(By.id("makePaymentButton")).isEnabled())
{
Thread.sleep(4000);
driver.findElement(By.name("password_ccCvv")).sendKeys("999");
Thread.sleep(4000);
driver.findElement(By.id("makePaymentButton")).click();
Thread.sleep(9000);
}
答案 0 :(得分:0)
不确定为什么选择while循环,但没有一个循环可以完成同样的事情。在以下示例中,使用了Explicit Wait。
// Define and wait (up to 10 seconds) for the "Make Payment" button
WebElement btnMakePayment = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("makePaymentButton")));
// Fill out password
driver.findElement(By.name("password_ccCvv")).sendKeys("999");
// Click "Make Payment" button
driver.findElement(By.id("makePaymentButton")).click();
答案 1 :(得分:0)
这是因为你试图找到一个不再显示的元素。您需要将findelement代码放入“try”。
必须是这样的:
WebElement verificator = driver.findElement(By.id("makePaymentButton")).isEnabled()
while(verificator)
{
Thread.sleep(4000);
try {
driver.findElement(By.name("password_ccCvv")).sendKeys("999");
Thread.sleep(4000);
driver.findElement(By.id("makePaymentButton")).click();
Thread.sleep(9000);
} catch (Exception e) {
verificator = false;
}
}
这是一个伪代码。如果它不起作用,请验证de sintax