在我的情况下,有人可以帮助我解决“ org.openqa.selenium.StaleElementReferenceException:”吗?

马吉克

我有一个包含4行和4列的表。我将第一列中的参数名称与我的HasMap参数键进行比较,如果匹配,则应单击第四行中同一行的“齿轮”图标。看起来我在第二个参数处理期间丢失了行的引用。初始化HashMap并为其添加参数:

Map <String, String> parameters = new HashMap<>();
parameters.put("param1”, "value1”);
parameters.put("param2”, "value2”);

方法代码:

public void setOptionalPluginParameters (Map <String, String> parameters) {

    Map <String, String> sorted_parameters = new TreeMap<String, String>(parameters);
    List <WebElement>  table_rows = driver.findElements(By.className("x-grid3-row"));

    for (WebElement table_row : table_rows) {
            String table_parameter_name = table_row.findElement(By.cssSelector("div.x-grid3-col-2")).getText();
            for (String key : sorted_parameters.keySet())
            {
                if (table_parameter_name.equals(key)) {
                    String parameter_value = sorted_parameters.get(key);
                    System.out.println("Hash value: "+ parameter_value + " By Hash Key: " + key);
                    WebElement gear = table_row.findElement(By.cssSelector("div.x-grid3-col-5 i.fa-gear"));
                    gear.click(); // <------error here during processing second parameter-------->
                    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("value")));
                    driver.findElement(By.id("value")).clear();
                    driver.findElement(By.id("value")).sendKeys(parameter_value);
                    driver.findElement(By.cssSelector("button[type='submit']")).click();
                    break;
                }
            }
        }

结果:org.openqa.selenium.StaleElementReferenceException:过时的元素引用:元素未附加到页面文档

我尝试了很多方法来解决它,但都没有成功:

  • Thread.sleep();
  • 试着抓;
  • 在循环中尝试捕获;
  • 再次发现找到的项目;
  • driver.navigate()。refresh();
磷酸二氢

当您对文档(HTML)进行更改时,就会发生陈旧元素。因此,在您的情况下,您可以在for循环中单击操作。这将修改html文档。

这会更改所有元素的引用,因此您必须重新标识所有元素。在以下溶剂中使用

public void setOptionalPluginParameters (Map <String, String> parameters) {

    Map <String, String> sorted_parameters = new TreeMap<String, String>(parameters);
    List <WebElement>  table_rows = driver.findElements(By.className("x-grid3-row"));
    WebElement table_row;
    int count=0;
    while (count!=table_rows.size()) {
            table_row = table_rows.get(count);
            count+=1;
            String table_parameter_name = table_row.findElement(By.cssSelector("div.x-grid3-col-2")).getText();
            for (String key : sorted_parameters.keySet())
            {
                if (table_parameter_name.equals(key)) {
                    String parameter_value = sorted_parameters.get(key);
                    System.out.println("Hash value: "+ parameter_value + " By Hash Key: " + key);
                    WebElement gear = table_row.findElement(By.cssSelector("div.x-grid3-col-5 i.fa-gear"));
                    gear.click(); // <------error here during processing second parameter-------->      
                    wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("value")));
                    driver.findElement(By.id("value")).clear();
                    driver.findElement(By.id("value")).sendKeys(parameter_value);
                    driver.findElement(By.cssSelector("button[type='submit']")).click();
                    table_rows = driver.findElements(By.className("x-grid3-row"));
                    break;
                }
            table_rows = driver.findElements(By.className("x-grid3-row"));
            
            }
       }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档