【问题标题】:Unable to switch between two browser windows using Selenium WebDriver无法使用 Selenium WebDriver 在两个浏览器窗口之间切换
【发布时间】:2015-02-20 11:11:06
【问题描述】:

我是 WebDriver 的新手,我在浏览器窗口切换时遇到问题。 我搜索了我的查询解决方案,但我发现最好的答案仍然不适合我。

这是我的代码:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.BeforeSuite;


public class FrameWorkBase {

public static WebDriver driver;
    public static WebDriverWait wait;
public static String firstWindow,secondWindow;
    @BeforeSuite
    public void startDriver() throws Exception{

driver= new FirefoxDriver(); // this firefox window is to open survey
        driver.manage().window().maximize();
        wait=new WebDriverWait(driver, 40);

        driver.get("http://www.cricinfo.com");
firstWindow=driver.getWindowHandle();

driver=new FirefoxDriver();
        driver.manage().window().maximize();

        driver.get("https://translate.google.co.in/");
secondWindow=driver.getWindowHandle();


        System.out.println("First window handle :" + firstWindow);
        System.out.println("\n Second window handle :" + secondWindow);

driver.switchTo().window(firstWindow);
System.out.println("hello");
}
}

我在执行时遇到错误,因为无法找到窗口“xyz”,其中“xyz”是第一个窗口的名称。 即使我正在打印窗口名称,它也显示与显示错误的窗口相同的窗口。

请建议我在这里做错了什么。 谢谢

【问题讨论】:

  • 提供的答案与我使用的相同,是否需要关闭其他浏览器窗口进行导航?这个答案对我没有帮助。 :(
  • 不一定。只要您同时拥有父窗口和子窗口的句柄,您就可以来回导航并对它们中的任何一个执行操作。请检查我下面与此相关的答案。希望它可以帮助您在这方面取得一些进展。 :)

标签: java selenium-webdriver


【解决方案1】:

发生这种情况是因为您重新初始化了驱动程序实例。

driver=new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://translate.google.co.in/");

这一行已经重新初始化了您的驱动程序实例,所以无论您尝试做什么,您都不会找到窗口句柄。如果您尝试同时在两个网站上工作,请尝试创建另一个驱动程序对象,例如 WebDriver driver2 = new FirefoxDriver();

【讨论】:

    【解决方案2】:

    @Vivek 恰当地回答了您的问题。但是,如果您仍想在新窗口中打开链接,您可以尝试以下代码:

    Actions act = new Actions();
    WebElement link = driver.findElement(By.xpath("//xpath of the link"));
    
    //Opening the link in new window (works in FF and Chrome)
    act.contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform();
    

    您可以使用句柄相应地在它们之间切换。此外,this link will help you handle two windows simultaneously

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2013-05-23
      • 2011-08-07
      • 2014-10-20
      • 2017-05-13
      • 2012-05-05
      相关资源
      最近更新 更多