2016-10-21 7 views
0

私はセレンとjavascriptを初めて使っています。私が作業しているWebページは、特定の認証を行い、フレームのURLを構築するためにjavascriptを使用しています。私が直接find_element_by_tag_nameにフレームを配置するために試みたが、もちろんそのsrcが空であるPython with selenium: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); 
} 

コードは次のように見えます。このフレームにどのように切り替えるか分かりません。誰でもお勧めできますか?どうもありがとうございました!!

driver.switch_to_frame("main_contents") 

またはこのiframeDOMにロードするために時間がかかる場合、あなたがWebDriverWaitExplicit Waitsを使用して切り替えるようにしてください - :

+0

問題が – Seraph

答えて

0

あなたは下に彼らのid属性値を使用してだけでなく、このiframeに切り替えることができます以下のようにも切り替えることが可能な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属性値として取得しますか? –

関連する問題