Selenium Webdriver - 在同一测试中在几个活动的同步会话之间切换

时间:2015-08-13 16:41:07

标签: session selenium browser webdriver

我遇到了需要在同一个运行中打开几个独立的,不同的驱动程序浏览器会话并在它们之间移动的场景,即不是由同一个驱动程序通过点击链接打开的不同窗口,而不是不同的选项卡,弹出窗口相同驱动程序,而不是在不同的浏览器上测试相同的测试。

例如:测试同一用户允许的同时打开的会话的最大数量,然后在会话之间移动以优雅地注销和关闭。

我对网络进行了广泛的研究,发现只有一个与我的测试无关的参考文献。

经过多次实验,我找到了一个解决方案,现在有勇气与社区分享如何测试此类案例的方法。这是我的第一篇文章,我希望它能帮助别人。

下面的代码将打开初始驱动程序,然后是5 其他驱动程序以执行成功的活动登录,然后第6次登录将生成错误。之后,在不同的会话/浏览器之间切换以注销并关闭所有打开的驱动程序/会话。

               ArrayList<WebDriver> Drivers=new ArrayList<WebDriver>();                 

                String winHandleOnLoad=driver.getWindowHandle();
                for(int i=0;i<=5;i++){

                    WebDriver loopdriver = new FirefoxDriver();
                    Drivers.add(i,loopdriver);
                    loopdriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
                    loopdriver.get("YOUR URL");

                    WebElement uname = loopdriver.findElement(By.name(loginNameID));
                    WebElement pwd = loopdriver.findElement(By.name(PasswordID));
                    if ((uname.isDisplayed()==false) ||pwd.isDisplayed()==false) {
                         bPass=false;
                         break;
                    }
                    else{
                         // set the user name and pwd  in input text box and submit to login   
                          uname.sendKeys(LoginName);
                          pwd.sendKeys(password);               
                          pwd.submit();
                     }            

                    if(i<5){
                        // Verify that user successfully logged in performed agaisnt (LoginName)published on a page
                        String title=loopdriver.findElement(By.xpath("yourVerificationID")).getText();
                        if(title.equalsIgnoreCase(LoginName)){
                            System.out.println("Found Title="+title);  // Verify login
                        }
                        else{
                            bPass=false;
                        }
                    }
                    else{  // 6th opened browser session should generate an error
                        String error=loopdriver.findElement(By.xpath("yourErrorLocationID")).getText();
                        if(error.contentEquals(Expected)){
                            System.out.println("True:Expected Error="+Expected+" Actual Error="+error);
                            bPass=true;
                        }
                        else{
                            System.out.println("Error Message is NOT Correct:Expected Error="+Expected+" Actual Error="+error);
                                     bPass=false;
                        }
                        loopdriver.close();
                    }   
                }

        //Switch between sessions to logout and close
                for(int j=0;j<=4;j++){

                    WebDriver getDriver=Drivers.get(j);
                    getDriver.switchTo().defaultContent();

                    getDriver.findElement(By.xpath("yourLogoutLinkID")).click();
                getDriver.close();                              
                }
                driver.switchTo().defaultContent(); //close initial "empty" window
                driver.quit();
                if (bPass==true){                       
                    System.out.println("PASSED");

                }else if (bPass==false){
                    System.out.println("FAILED");                       
                }

        }//END

0 个答案:

没有答案