这是我关于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
以下详细信息可能有所帮助:
这是我的代码:
// 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");
答案 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);