我有一个文本框。它只接受数字类型。键入字符串sendKeys(Keys.TAB)
时,将显示弹出的错误消息。这个弹出窗口由jQuery附加id="message_eff"
并且之前不存在。
我尝试使用此代码:
driver.findElement(By.xpath(".//*[@id='messagefor_eff']"));
并运行我的测试。 我运行我的测试10次,但有时会出错:
org.openqa.selenium.NoSuchElementException: Unable to locate element {"method":"xpath","selector":".//*[@id='messagefor_eff']"}
如何修复此错误并再次显示此错误?
答案 0 :(得分:0)
在找到动态生成的元素之前尝试合并explicit wait:
WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[@id='messagefor_eff']")));
driver.findElement(By.xpath(".//*[@id='messagefor_eff']"));
答案 1 :(得分:0)
在查找元素之前,您可能需要切换到警报:
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
driver.findElement(By.xpath(".//*[@id='messagefor_eff']"));
请参阅:https://selenium.dev/documentation/en/webdriver/js_alerts_prompts_and_confirmations/