2013-08-21 18 views
4

我使用Java創建硒測試用例。我的系統基於彼此連接的portlet。我使用「selectFrame」命令來選擇portlet。如何使用硒選擇一個框架?

我試過很多東西,但現在看來,這是不工作是這樣的:

driver.switchTo().frame("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]"); 

driver.findElement(By.id("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]")); 

誰能幫助我?

回答

4

您有一個XPath表達式,該表達式可以讓您獲得所需的IFrame元素。然而,你並沒有告訴Selenium這是一個XPath表達式。以下是你需要的東西:

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]")); 

注意,我的Java是不是最好,所以這可能會導致編譯問題,但你應該明白你的意思。

首先找到元素,告訴Selenium它是一個XPath表達式,然後使用該元素並將其粘貼在「切換到框架」表達式中。

+0

謝謝兩位,我真的很格萊德對您有所幫助。有用。 – 2ousy

2
driver.switchTo().defaultContent(); 
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'FUN_UnitList_FilterByLevelIndexOne')]"))); 
+0

謝謝你們兩位,我真的很想你們的幫助。有用。 – 2ousy

0

我能夠沒有名稱或ID使用此方法&的Python硒選擇一個「SRC」幀。我找到了元素的xpath,並做了這個代碼讓硒正確選擇框架(使用Python 2.7):

driver.switch_to.frame('// * [@ id =「Detail -innerCT「]/IFRAME'))

1

我們可以給幀識別

語法姓名,ID,索引和WebElement定位: -

driver.switchTo().frames(); // Switch to window to frame 

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

如果我們知道那麼我們可以使用「index」。 索引值有助於在幀之間輕鬆切換。 索引將從零開始,即如果網頁僅具有一個幀,則其索引將爲零,即 。 如果我們不知道的幀數,我們可以使用「findElementBytabname()」方法

語法: -

try 
{ 
    driver.switchTo().frame(indexnumber); 
} 
    catch(NoSuchFrameException e) 
{ 
    System.out.println(e.getMessage()); 
} 

我們使用try和catch如果現在幀將不提供此拋出異常NoSuchFrameException()

使用name作爲定位符來找到幀 語法: -

try 
{ 
    driver.switchTo().frame(「frameName」); 
} 
    catch(NoSuchFrameException e) 
{ 
    System.out.println(e.getMessage()); 
} 

使用WebElement切換幀

語法: -

try 
{ 
    WebElement button=driver.findElement(By.xpath("")); 
    driver.switchTo().frame(button); 
} 
    catch (NoSuchFrameException e) 
{ 
    System.out.println(e.getMessage()); 
}