Python与selenium:访问iframe,其src由javascript函数返回

时间:2016-10-21 23:07:02

标签: javascript python selenium iframe

我对selenium和javascript完全不熟悉。我正在处理的网页使用javascript进行某些身份验证并构建一个框架的URL。

代码类似于:

<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是空的。我不知道如何切换到这个框架。谁有人建议?非常感谢!!

1 个答案:

答案 0 :(得分:1)

您可以使用iframe属性值以及以下内容切换到此id: -

driver.switch_to_frame("main_contents")

如果此iframe需要花费时间加载DOM,您应该尝试使用WebDriverWait Explicit Waits进行切换,等待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")))