尝试切换到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();
答案 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);
注意:如果您想要对同胞帧进行聚焦,首先必须将焦点对准父帧,然后才能进行下一次对焦。