我有一个包含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:过时的元素引用:元素未附加到页面文档
我尝试了很多方法来解决它,但都没有成功:
当您对文档(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] 删除。
我来说两句