通过在Selenium中的jQuery中生成来获取元素

Get element by generate in jQuery in Selenium

本文关键字:获取 元素 jQuery Selenium 中的      更新时间:2023-09-26

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

如何修复此错误并使此错误再次出现?

在定位动态生成的元素之前,尝试合并显式等待

WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[@id='messagefor_eff']")));
driver.findElement(By.xpath(".//*[@id='messagefor_eff']")); 

在查找元素之前,您可能需要切换到警报:

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/