Selenium Webdriver - Chrome - 切换窗口并返回 - 无法从渲染器接收消息

Nih*_*mar 4 java selenium selenium-webdriver

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

我正在使用 selenium Webdriver 测试 Web 应用程序。这是付款网页,在选择付款方式为“PayPal”后,它会打开一个新的弹出窗口、一个 PayPal 弹出窗口和我将窗口切换到 Paypal,执行所有必要的交易。一旦交易成功,paypal 弹出窗口将自动关闭,我无法从我发起交易的地方返回到我的原始窗口。

我在 Eclipse 控制台中收到以下错误:

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

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

  • 硒网络驱动程序(2.28.0)
  • java - JRE7
  • 谷歌浏览器版本 - 版本 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");
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 5

你应该使用:

driver.switchTo().window(currentWindowHandle);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的答复。然而问题仍然存在。CurrentWindowHandle 不起作用。我仍然无法切换到我原来的窗口。还有更多建议吗?我很乐意尝试 (3认同)