java - 当我第一次尝试从下拉列表中选择选项时它可以工作,但第二次我收到错误作为陈旧的元素参考:
问题描述
当我第一次尝试从下拉列表中选择选项时它可以工作,但第二次我收到错误,因为过时的元素引用:元素未附加到页面文档我尝试等待仍然得到相同的错误 org.openqa.selenium.StaleElementReferenceException: stale元素引用:元素未附加到页面文档
@Test(priority = 15)
// To check Edit partner feature by Selecting "Food Type" one by one option
public void editPartnerBySelectingFoodType() throws InterruptedException {
// Click on Partners
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"main-menu\"]/ul/li[3]/a")).click();
// Click on All Partners
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"main-menu\"]/ul/li[3]/ul/li[2]/a")).click();
// Search Partner
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"bootstrap-data-table_filter\"]/label/input")).sendKeys("NH37 Dhaba");
// Click on edit button
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"bootstrap-data-table\"]/tbody/tr/td[8]/center/a[1]/img")).click();
String[] foodType = {"Select Food Type", "veg", "veg-non veg", "Pure veg"};
//Created variable for Food Type dropdown
WebElement selectFoodType = driver.findElement(By.xpath("//select[@id='foodtype']"));
Thread.sleep(3000);
//Created variable for dropdown option
List<WebElement> optionLinks = driver.findElements(By.xpath("//*[@id=\"foodtype\"]/option"));
System.out.println(optionLinks.size());
for(int i=0; i<optionLinks.size(); i++) {
String name =optionLinks.get(i).getText();
//get array list
List<String> foodTypeOptions = Arrays.asList(foodType);
if(foodTypeOptions.contains(name)) {
System.out.println(name);
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElements(By.xpath("//*[@id=\"foodtype\"]/option")).get(i).click();
Thread.sleep(2000);
// Click on Update to update
driver.findElement(By.xpath("//*[@id=\"marchant_form\"]/div[22]/button[1]")).click();
alert = driver.switchTo().alert();
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
if (alert.getText().equals(PartnerAlert2)) {
System.out.println(alert.getText());
alert.accept();
// Click on Partners
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"main-menu\"]/ul/li[3]/a")).click();
// Click on All Partners
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"main-menu\"]/ul/li[3]/ul/li[2]/a")).click();
// Search Partner
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"bootstrap-data-table_filter\"]/label/input")).sendKeys("NH37 Dhaba");
// Click on edit button
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"bootstrap-data-table\"]/tbody/tr/td[8]/center/a[1]/img")).click();
// wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
// //Click on Food Type drop down
// selectFoodType.click();
//
wait = new WebDriverWait(driver, 5 /* timeout in seconds */);
driver.findElement(By.xpath("//*[@id=\"foodtype\"]")).click();
}
}
}
解决方案
推荐阅读
- ios - for in 循环两次 Swift
- php - 从 geojson 保存 postgis 几何类型
- binaryfiles - 如何解码/编码电缆调制解调器配置文件?
- react-native - 如何允许使用本机反应在列表项中输入文本?
- reactjs - 将 Redux 状态与 Firebase Firestore 同步
- c# - Visual Studio 构建 - 路径中的逗号问题
- java - Spring Boot Jersey 自动配置
- c++ - 转换此函数以读取整个文件
- cytoscape.js - 如何使边缘的标签显示在中间位置?
- python - 类型错误:序列项 0:预期的 str 实例,在尝试打印列表时引发 int