2011-12-01 110 views
2

我使用Selenium Server來測試基於小部件的網頁。所有的小部件都包含在一個iFrame中,每個小部件都包含它自己的iFrame。我試圖操作標題中指定的特定小部件中的元素,但Selenium似乎無法識別第二個iFrame之後的任何內容。Selenium在識別嵌套iFrame中的元素時遇到問題

小部件的標題在第一個iFrame中,我需要用它來確定下一個要選擇的iFrame。我使用來選擇框架的代碼看起來是這樣的:

selenium.selectFrame("css=div.widgetheader:contains(TITLE)+widgetbody iFrame); 

然而,當我試圖內嵌框架內訪問的元素,硒是無法找到他們。

有關如何讓Selenium識別第二幀內的元素的想法?

回答

0

如果您嘗試輸入嵌套在另一個iframe中的iframe,則必須執行2個iframe「切換」。 例如:

driver.switchTo().frame(driver.findElement(By.id("frameId1"))); //switching driver to first iframe 
driver.switchTo().frame(driver.findElement(By.id("frameId2"))); //switching driver to second iframe 
//Now, do your stuff. 

要返回初始位置(削減,用途:

driver.switchTo().defaultContent(); 

此外,還有可當我們不能夠得到的iframe值的情況下在這種情況下,你可以使用tagName方法。

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));