Java selenium webdriver测试在随机多次迭代后停止

Java selenium webdriver测试在随机多次迭代后停止,java,vb.net,selenium,automated-tests,qa,Java,Vb.net,Selenium,Automated Tests,Qa,我测试了一个用VB.NET编写的web应用程序。应用程序使用许多嵌套的iframe。其中一个框架中是项目列表。在第二个框架中出现字段,这些字段与选择第一个框架的特定元素一起填充了从数据库检索到的有关该项目的信息 我想创建一个性能测试,检查从单击加载数据所经过的时间 在加载数据时单击鼠标后,将显示象征此操作的gif动画。此时,我检查动画是否消失,然后继续下一次单击。我用java编写代码,我的函数如下所示: public void function(int i, int repeat){

我测试了一个用VB.NET编写的web应用程序。应用程序使用许多嵌套的iframe。其中一个框架中是项目列表。在第二个框架中出现字段,这些字段与选择第一个框架的特定元素一起填充了从数据库检索到的有关该项目的信息

我想创建一个性能测试,检查从单击加载数据所经过的时间

在加载数据时单击鼠标后,将显示象征此操作的gif动画。此时,我检查动画是否消失,然后继续下一次单击。我用java编写代码,我的函数如下所示:

public void function(int i, int repeat){
             for(int a = 0; a<repeat; a++){
                 driver.switchTo().defaultContent();
                 driver.switchTo().frame("MyFrame");
                 driver.switchTo().frame("frame_Left");
                 driver.switchTo().frame("Elements");

                 List<WebElement> ele4 = driver.findElements(By.tagName("tr"));
                 long start=System.currentTimeMillis(); 
                 wait.until(ExpectedConditions.elementToBeClickable(ele4.get(i)));
                 ele4.get(i).findElement(By.xpath("td/div/a")).click();

                 driver.switchTo().defaultContent();
                 driver.switchTo().frame("MyFrame");
                 driver.switchTo().frame("frame_Right");
                 wait.until(ExpectedConditions.invisibilityOfElementLocated((By.xpath("//*[@src='/directiory/Loading.gif']"))));
                 long stop=System.currentTimeMillis();  

                 System.out.println("Time: "+(stop-start) + "\n");
                 ele4.clear();
              }
}
在某个随机时刻,自动测试停止点击。应遵循的其他操作也会停止。他不报告任何错误或例外情况。当我在一个有趣的元素中手动单击,使测试再次恢复。m但在一个随机的迭代次数之后,循环问题重复出现。 如何解决此问题?

注意:这只是示例解决方案-请尝试查看

for(int counter = 0;counter<4;counter++)
    {
     try
       { 
       // Your Code for Clicking The element i.e - ele4.get(i).findElement(By.xpath("td/div/a")).click();
       }
       catch
       {
        // If the First click is a success  second  click will throw an exception which means you have proceed to the next step
        break;
       }
    }

另外,如果你在点击之间需要更多的等待时间,请添加一个Thread.Sleep。最后,我将测试重写为C。据我所知,Java不支持点击超时。C中类似的代码不会冻结我的程序,但60秒后会抛出一个异常,这在我的情况下是可取的。更重要的是,在我使用Windows8之前,同样的Java程序在Windows10上正常运行,IE版本稍高一些。我不知道为什么会发生这种情况,但这可能是未来某个人的线索。

Robert:这是在循环中随机执行次数后在同一行发生的,还是在不同的行中不同的步骤发生的?测试应该进行循环,例如12小时不间断。当它尝试执行这一行时,它通常发生在数百次循环迭代之后:ele4.geti.findElementBy.xpathtd/div/a.click;尝试在初始帧切换和查找tr元素之间添加暂停。这可能是由于加载问题造成的;和List ele4=driver.findElementsBy.tagNametr;不幸的是,问题仍在发生。罗伯特:由于它发生在同一行中,并且没有引发任何异常,因此您可以使用一些预防机制来实现自己的多次单击解决方案,以便在首次单击成功时进一步单击。如果您喜欢,我可以发布一个示例代码,但您确定第二次单击会引发异常吗?在我的例子中,它总是点击很多次,然后进入下一步。好吧,我的错误,因为你正在移动到默认内容,我的印象是,一旦你点击按钮,它将消失在弹出窗口中。似乎情况并非如此,您必须检查某些新元素是否在初次单击后出现,并且只有在不存在新元素时才继续进行第二次单击。我无法更具体地看到你的答复的应用程序库。我用另一种方法解决我的问题。我在帖子中给出了我的答案。