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

时间:2017-09-28 12:42:26

标签: selenium selenium-webdriver

尝试切换到seconf框架packageFrame时,获得以下异常。

线程“main”中的异常org.openqa.selenium.NoSuchFrameException:没有显示按名称或id找到的frame元素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();

3 个答案:

答案 0 :(得分:1)

您可以在切换到第二帧之前使用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();

这可能适合你。

答案 1 :(得分:1)

首先来到父框架,然后转到第二帧

//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();

答案 2 :(得分:1)

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

 WebDriver.switchTo().parentFrame();

2。此代码用于聚焦到root(关于根帧)。这意味着驱动程序实例将焦点从当前帧移动到所有帧之外。

 WebDriver.switchTo().defaultContent();

3。此代码用于聚焦到子帧。这意味着驱动程序实例将焦点从当前帧移动到子帧。 在这里,您可以将参数作为帧名称,帧ID,框架元素和索引传递。 如果index为0,则它​​是第一个子帧。

 WebDriver.switchTo().frame(parameter);

注意:如果您想要对同胞帧进行聚焦,首先必须将焦点对准父帧,然后才能进行下一次对焦。