python
  • selenium
  • iframe
  • xpath
  • 2015-03-02 88 views 12 likes 
    12

    我想創建一個Selenium測試,用AOL郵件測試我們的擴展。我設法登錄到AOL並撰寫電子郵件,但我還需要選擇編輯器內部的元素,它位於iframe中。我檢查,甚至當編輯器打開下面的測試失敗:如何使用Xpath選擇iframe中的元素?

    self.assertEqual(first=1, second=len(self.driver.find_elements_by_xpath(xpath="//iframe[@name='editor_body']//body[@contenteditable='true']"))) 
    

    我得到的錯誤AssertionError: 1 != 0。如何通過Xpath(或以其他方式使用Selenium)選擇iframe和其他元素的主體?

    +1

    您是否嘗試過使用'.switch_to().frame(element)'? – 2015-03-02 17:16:41

    +0

    @MarkRowlands謝謝,它的工作原理!但是用'self.driver.switch_to.frame(frame_reference = self.driver.find_element_by_xpath(xpath =「// iframe [@ name ='editor_body']」))' – Uri 2015-03-03 15:32:27

    回答

    15

    您不能遍歷直到切換到它們。你XPATH,

    //iframe[@name='editor_body']//body[@contenteditable='true'] 
    

    將無法​​工作,因爲<body>標籤是一個iFrame,這是不是在目前的範圍內。您需要先切換到它:

    driver.switch_to.frame('editor_body')... 
    
    +2

    謝謝,它可行!我用'self.driver.switch_to.frame(frame_reference = self.driver.find_element_by_xpath(x path =「// iframe [@ name ='editor_body']」))' – Uri 2015-03-03 15:34:01

    +0

    我怎麼會用硒節點? – 2016-02-22 20:36:42

    +0

    無論您是在本地運行還是使用節點 - 結果都是一樣的。 – sircapsalot 2016-02-22 21:09:01

    相關問題