2016-10-21 57 views
0

我完全不熟悉硒和JavaScript。我正在處理的網頁使用JavaScript來執行特定的身份驗證併爲框架構建網址。與硒的Python:訪問其src由javascript函數返回的iframe

代碼看起來是這樣的:

<iframe id="main_contents"></iframe> 
<script type="text/javascript"> 
var baseUrl = 'http://xxxxxxxxx.com/'; 
function init() { 
    gadgets.io.makeRequest(baseUrl+"auth/", function(obj) { 
     var iframe = document.getElementById("main_contents"); 
     if (obj.data.status == 'OK') { 
      iframe.src = baseUrl+"?xx="+obj.data.xx; 
      ... 
     } 
     ... 
    }, params); 
} 

我曾嘗試直接定位框架與find_element_by_tag_name但當然它的SRC是空的。我不知道如何切換到這個框架。有誰可以建議?非常感謝你!!

+0

問題已經解決 – Seraph

回答

0

您可以使用他們的id屬性值切換到該iframe以及下文: -

driver.switch_to_frame("main_contents") 

如果此iframe需要時間來對DOM加載,你應該嘗試使用Explicit WaitsWebDriverWait切換到等到iframe可用以及切換如下: -

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(("main_contents"))) 
+0

感謝您發表評論,但我已經嘗試過了,它不起作用。沒有錯誤,但會話未切換到幀。例如,我測試了 – Seraph

+0

'frame = browser.find_element_by_id(「main_contents」)' 'print(frame.get_attribute(「src」))'沒有輸出 – Seraph

+0

@Seraph如果沒有錯誤,你怎麼知道它沒有不能切換到iframe?你在這個iframe中切換後發現了一些元素?你想切換iframe元素還是想將其作爲src屬性值? –