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