Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Selenium处理刷新WebElement_Java_Selenium - Fatal编程技术网

Java 使用Selenium处理刷新WebElement

Java 使用Selenium处理刷新WebElement,java,selenium,Java,Selenium,我正在测试一个由多个框架组成的网站。服务器可以随时重新生成帧,即使没有更改任何元素。如果这发生在 driver.findElement(By.id("11")).getText(); 在findElement和getText之间,抛出一个staleElementException。我当前的解决方案是重试多次 for (int i = 0; i < 3; i++) { try { driver.findElement(By.id("11")).getText();

我正在测试一个由多个框架组成的网站。服务器可以随时重新生成帧,即使没有更改任何元素。如果这发生在

driver.findElement(By.id("11")).getText();
在findElement和getText之间,抛出一个staleElementException。我当前的解决方案是重试多次

for (int i = 0; i < 3; i++) {
    try {
        driver.findElement(By.id("11")).getText();

    } catch (StaleElementException e) {
        // retry
    }    
}
for(int i=0;i<3;i++){
试一试{
driver.findElement(By.id(“11”)).getText();
}捕获(StaleElementException e){
//重试
}    
}

这真的会让代码膨胀,有更好的解决方案吗?

编写一个函数,让代码看起来不那么膨胀,但我认为没有更好的方法来解决这个问题


这里有一篇很好的博客文章:

首先,我们必须确定gettext出现在哪个框架中,然后切换到特定框架,然后查找元素

语法:

   driver.switchTo().frame("frameName"); //name of the frame
   driver.switchTo().frame(1); //index
例如:

     driver.switchTo().frame(1);
     driver.findElement(By.xpath("//p")).getText();
     driver.switchTo().defaultContent();
注:

请查找以下路径的原因:StaleElementException

  • 该元素已被完全删除
  • 元素不再附加到DOM
  •      driver.switchTo().defaultContent(); //Used default frame, I.E. If there are three frames in one page named as 1,2,3. If you want to switch from frame 2 to frame 3, In that case we are not able to switch directly to the frame 3, In this case what we have to do is 
         driver.switchTo().frame("2"); //frame 2
         driver.switchTo().defaultContent();// main window - (Default page) while loading webpage
         driver.switchTo().frame("3"); //frame 3