Selenium Webdriver - Chrome - 切换窗口和后退 - 无法从渲染器接收消息

时间:2014-03-13 14:59:39

标签: java selenium selenium-webdriver

这是我关于Stack Overflow的第一个问题。感谢所有保持技术激情的StackOverflow用户。

我正在使用selenium Webdriver测试Web应用程序。这是支付网页,在选择付款方式为'PayPal'后,它打开一个新的Popup,一个PayPal弹出窗口和i Switch窗口到Paypal,做我所有必要的交易。一旦交易成功,paypal弹出窗口就会自动关闭,我无法从我发起交易的地方返回原来的窗口。

我在eclipse控制台中遇到以下错误:

Starting ChromeDriver (v2.9.248315) on port 25947
[70.164][SEVERE]: Unable to receive message from renderer

以下详细信息可能有所帮助:

  • selenium Webdriver(2.28.0)
  • java - JRE7
  • Google Chrome版本 - 版本33.0.1750.146
  • 测试框架 - 测试NG

这是我的代码:

              // To Switch to Popup/Paypal window

              String currentWindowHandle=driver.getWindowHandle();        

             Set<String> openWindowsList=driver.getWindowHandles();        
             String popUpWindowHandle=null;
             for(String windowHandle:openWindowsList)
             {
             if (!windowHandle.equals(currentWindowHandle))
             popUpWindowHandle=windowHandle;
             }

            driver.switchTo().window(popUpWindowHandle);      
    // Carraying out my paypal transaction        
            driver.manage().window().maximize();
            driver.findElement(By.xpath("//*[@id='loadLogin']")).click();

        Thread.sleep(8000);

        WebElement login_email = driver.findElement(By.xpath("//*[@id='login_email']"));
        login_email.clear();
        login_email.sendKeys(Keys.BACK_SPACE);
        login_email.sendKeys("abc@abc.com");

        WebElement login_password = driver.findElement(By.xpath("//*[@id='login_password']"));
        login_password.clear();
        login_password.sendKeys("abcxyz");
      // Next Click is Final Click on PayPal                        
        driver.findElement(By.xpath("//*[@id='submitLogin']")).click();
      // Transaction is finished on PayPal side and it automatically popup is closed
      //Now i am trying to switch to my last working(original) window
        driver.switchTo().window("My Web Page Title");

3 个答案:

答案 0 :(得分:4)

您应该使用:

driver.switchTo().window(currentWindowHandle);

答案 1 :(得分:2)

问题已解决。

我在声明currentWindowHandle的地方是在点击之后,它将新窗口作为当前窗口句柄。

我刚刚将以下语句移至新窗口点击事件之前。

String currentWindowHandle=driver.getWindowHandle();

感谢您的所有时间和帮助。

答案 2 :(得分:1)

这是因为页面加载时间较长,您需要在chromedriver选项中添加其他行。

System.setProperty("webdriver.chrome.driver","E:\\selenium\\chromedriver_2.41\\chromedriver.exe");
//mention the below chrome option to solve timeout exception issue
ChromeOptions options = new ChromeOptions();
options.setPageLoadStrategy(PageLoadStrategy.NONE);
// Instantiate the chrome driver
driver = new ChromeDriver(options);