Selenium 无法使用SwitchTo()切换到窗口中的第二帧

Selenium 无法使用SwitchTo()切换到窗口中的第二帧,selenium,selenium-webdriver,Selenium,Selenium Webdriver,尝试切换到seconf frame packageFrame时,出现以下异常 线程“main”org.openqa.selenium.NoSuchFrameException中的异常:未显示按名称或id packageFrame找到的框架元素 请在下面找到我的代码 System.setProperty("webdriver.chrome.driver", "E://MyEclipse//jars//chromedriver//chromedriver.exe"); WebDriver drive

尝试切换到seconf frame packageFrame时,出现以下异常

线程“main”org.openqa.selenium.NoSuchFrameException中的异常:未显示按名称或id packageFrame找到的框架元素

请在下面找到我的代码

System.setProperty("webdriver.chrome.driver", "E://MyEclipse//jars//chromedriver//chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://demo.guru99.com/selenium/deprecated.html");

driver.switchTo().frame("classFrame");
driver.findElement(By.linkText("Deprecated")).click();

driver.switchTo().frame("packageFrame");
driver.findElement(By.xpath("//*[contains(text(),'AbstractWebDriverEventListener')]")).click();

在切换到第二帧之前,可以使用driver.switchTo().defaultContent()方法,如下所示

//launch browser
System.setProperty("webdriver.chrome.driver", "E://MyEclipse//jars//chromedriver//chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://demo.guru99.com/selenium/deprecated.html");


driver.switchTo().frame("classFrame"); //switching to frame 1
driver.findElement(By.linkText("Deprecated")).click();
driver.switchTo().defaultContent(; //swithc to parent window

driver.switchTo().frame("packageFrame");//switching to frame 2
driver.findElement(By.xpath("//*[contains(text(),'AbstractWebDriverEventListener')]")).click();

这可能适合您。

在切换到第二帧之前,您可以使用driver.switchTo().defaultContent()方法,如下所示

//launch browser
System.setProperty("webdriver.chrome.driver", "E://MyEclipse//jars//chromedriver//chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://demo.guru99.com/selenium/deprecated.html");


driver.switchTo().frame("classFrame"); //switching to frame 1
driver.findElement(By.linkText("Deprecated")).click();
driver.switchTo().defaultContent(; //swithc to parent window

driver.switchTo().frame("packageFrame");//switching to frame 2
driver.findElement(By.xpath("//*[contains(text(),'AbstractWebDriverEventListener')]")).click();

这可能适用于您。

首先进入父帧,然后进入第二帧

//Switch to parent window
driver.switchTo().defaultContent();

//switching to frame 2 i.e. packageFrame

driver.switchTo().frame("packageFrame");
//locate AbstractWebDriverEventListener and click
driver.findElement(By.xpath("//[contains(text(),'AbstractWebDriverEventListener')]")).click();

首先进入父帧,然后进入第二帧

//Switch to parent window
driver.switchTo().defaultContent();

//switching to frame 2 i.e. packageFrame

driver.switchTo().frame("packageFrame");
//locate AbstractWebDriverEventListener and click
driver.findElement(By.xpath("//[contains(text(),'AbstractWebDriverEventListener')]")).click();

聚焦到帧是基于DOM结构的。 1.此代码用于聚焦到父帧。这意味着驱动程序实例将焦点从当前帧移动到当前帧

 WebDriver.switchTo().parentFrame();
二,。此代码用于将焦点集中到根(关于根框架)。这意味着驱动程序实例将焦点从当前帧移到所有帧之外

 WebDriver.switchTo().defaultContent();
三,。此代码用于聚焦到子帧。这意味着驱动程序实例将焦点从当前帧移动到子帧。 在这里,您可以将参数作为帧名称、帧id、帧元素和索引传递。 如果索引为0,则它是第一个子帧

 WebDriver.switchTo().frame(parameter);

注意:如果要聚焦同级帧,首先必须聚焦到父帧,然后才能聚焦到下一帧。

聚焦到帧是基于DOM结构的。 1.此代码用于聚焦到父帧。这意味着驱动程序实例将焦点从当前帧移动到当前帧

 WebDriver.switchTo().parentFrame();
二,。此代码用于将焦点集中到根(关于根框架)。这意味着驱动程序实例将焦点从当前帧移到所有帧之外

 WebDriver.switchTo().defaultContent();
三,。此代码用于聚焦到子帧。这意味着驱动程序实例将焦点从当前帧移动到子帧。 在这里,您可以将参数作为帧名称、帧id、帧元素和索引传递。 如果索引为0,则它是第一个子帧

 WebDriver.switchTo().frame(parameter);
注意:如果你想对焦同级帧,首先你必须对焦到父帧,然后才可能对焦下一帧