Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 WebDriver-在无法定位窗口时纠正异常处理技术_Java_Selenium_Exception Handling_Selenium Webdriver - Fatal编程技术网

Java Selenium WebDriver-在无法定位窗口时纠正异常处理技术

Java Selenium WebDriver-在无法定位窗口时纠正异常处理技术,java,selenium,exception-handling,selenium-webdriver,Java,Selenium,Exception Handling,Selenium Webdriver,我正在使用Java和Selenium自动化一些测试用例。这涉及到加载带有搜索结果的单个页面,并在该页面上迭代每个100-1000个链接。将测试配置设置为仅检查大约100个结果通常是可以的,但是任何高于此值的内容都会抛出NoSuchWindowException(WebDriverException的子类)。当我从父句柄切换到新打开的窗口句柄时,就会发生这种情况 我在do while循环中编写了一个try-catch语句来捕获异常并重试该过程。。。但是,无论我尝试什么,Selenium都不会玩得很

我正在使用Java和Selenium自动化一些测试用例。这涉及到加载带有搜索结果的单个页面,并在该页面上迭代每个100-1000个链接。将测试配置设置为仅检查大约100个结果通常是可以的,但是任何高于此值的内容都会抛出NoSuchWindowException(WebDriverException的子类)。当我从父句柄切换到新打开的窗口句柄时,就会发生这种情况

我在do while循环中编写了一个try-catch语句来捕获异常并重试该过程。。。但是,无论我尝试什么,Selenium都不会玩得很好,我的代码执行会突然结束..:(以下是代码:

boolean completed = false;
    do{
        try{
            //click the search result
            driver.findElement(By.xpath("my xpath string")).click();
            //switch to the new window
            for(String winHandle: driver.getWindowHandles()){
                driver.switchTo().window(winHandle);
            }
            //for our test we need to save the source       
            source = driver.getPageSource();
            //close popup window and and switch back to the parent handle
            driver.close();
            driver.switchTo().window(parentHandle);
            completed = true;
        }catch(WebDriverException ex){
            System.out.println("something went wrong while switching windows... retrying");
            driver.close();
            driver.switchTo().window(parentHandle);
        }
    }while(!completed);
在捕获异常时,我尝试过各种方法。例如,我尝试使用driver.quit()保存父url,然后尝试重新启动驱动程序。但是,Selenium抱怨在调用driver.quit()后无法启动Firefox驱动程序


如何更好地处理代码中的catch部分?好的,多亏了Tala留下的注释,我找到了解决方案

我只是从catch块中删除了以下语句:

driver.close();
driver.switchTo().window(parentHandle);

现在catch块本身没有生成单独的未捕获异常,循环在重试上一个代码时正确工作…

异常从catch块抛出。您没有捕获它,应用程序退出