通过Selenium中的jQuery生成元素

时间:2015-12-10 06:49:07

标签: javascript java jquery selenium xpath

我有一个文本框。它只接受数字类型。键入字符串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']"}

如何修复此错误并再次显示此错误?

2 个答案:

答案 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/