2017-08-08 66 views
-1

我想用Python中的Selenium選擇一個框架。該網頁包含嵌套在frameset元素下的多個框架。我試圖選擇與使用的名稱 「fraMenu」 的幀:無法找到存在於Selenium Python中的框架

driver.switch_to.frame(driver.find_element_by_name( 「fraMenu」))

但我正在與該錯誤消息獲取NoSuchElementException異常:消息:無法找到元素:[name="fraMenu"]

完整的代碼如下:

driver = webdriver.Firefox() 

    driver.implicitly_wait(10) 
    driver.maximize_window()   

    driver.get("someurl") 

    # switch back to default frame 
    driver.switch_to.default_content() 

    # switch to frame with name fraMenu 
    driver.switch_to.frame(driver.find_element_by_name("fraMenu")) 
+0

請問框架有一個ID?我很確定你可以通過ID查找框架 – Mangohero1

+0

[選擇使用python selenium的iframe的可能的重複](https://stackoverflow.com/questions/7534622/selecting-an-iframe-using-python-selenium) – JeffC

+0

你可以分享相關的HTML或URL嗎? – DebanjanB

回答

0

你嘗試試圖找到它之前等待一段時間嗎?也許框架沒有時間加載。我建議你從time.sleep(4)開始,如果它工作,然後嘗試等待,直到框架加載與預期的條件。

1

可以使用下面的方法實際選擇的iFrame: -

  • 幀(指數)
  • 幀(該幀的幀[或] Id的名稱)
  • 幀(WebElement frameElement)
  • defaultContent()

因此可以通過將任何高於約幀信息進行切換。是的,你需要根據需要採取行動

例切換每次: -

driver.SwitchTo().Frame("top"); 

....執行對幀的動作

driver.SwitchTo().defaultContent(); 

driver.SwitchTo().Frame("navigation"); 

....在框架

執行你的行動
driver.SwitchTo().defaultContent(); 

....

現在,您必須找到嵌套框架的層次結構並逐個切換。

使用chrome開發工具,並選擇元素,你可以看到層次結構..只需從父母切換到孩子,直到你的元素沒有達到。執行您的操作,並切換回默認

例子: -

enter image description here

希望它會幫助你:)