2017-10-13 170 views
-2

我正在使用selenium webdriver自動執行Web應用程序,在此期間有一種情況,驅動程序必須切換到iframe才能與其元素進行交互。我所做的一切可能的措施,切換到iframe但還是我得到NoSuchFrameException並且無法識別元素

NoSuchFrameException:通過名稱或ID IMW_PROC_MAIN發現無邊框元素。

下面是我試過的代碼:

driver.switchTo().frame("IMW_PROC_MAIN"); 
pcw.txt_matterName(driver).sendKeys("TempApplication"); 

我也試圖找到指數當前HTML頁面和開關I幀的總數。 爲此,我收到文本框錯誤爲

NoSuchElementException。

共享頁面源代碼的屏幕截圖。由於一些限制,我不共享目標HTML文本。 HTML Page source

我想與具有id=matterName的元素進行交互。我如何才能做到這一點。

WebElement MAINFrameID=driver.findElement(By.id("GB_FRAME")); 
       driver.switchTo().frame(MAINFrameID); 
WebElement FrameID=driver.findElement(By.id("IMW_PROC_MAIN")); 
       driver.switchTo().frame(FrameID); 
// code for your operation 
+0

我不介意失望的選票。但用戶可能希望在投下它之前指出這個問題中的錯誤/不完整。 – MKay

回答

0

如果有2幀相互嵌套那就試試這個你可以試試這個替代

WebElement FrameID=driver.findElement(By.id("IMW_PROC_MAIN")); 
      driver.switchTo().frame(FrameID); 

。首先,您必須切換到該幀,然後切換到IMW_PROC_MAIN幀。 它是框架內的框架。第一個控制應該切換到外框,然後控制將切換到內部的一個

driver.switchTo().frame("GB_FRAME"); 
driver.switchTo().frame("IMW_PROC_MAIN"); 
pcw.txt_matterName(driver).sendKeys("TempApplication"); 
+0

是的,它正在切換到GB_FRAME,但無法通過id = IMW_PROC_MAIN找到元素。 – MKay

0

當你給亮顯有一個名爲GB_FRAME另一架:

相關問題