selenium元素定位中的iframe切换问题总结

 1 from selenium import webdriver
 2 from selenium.webdriver.support.wait import WebDriverWait
 3 from selenium.webdriver.support import expected_conditions as EC
 4 from selenium.webdriver.common.by import By
 5 import time
 6 
 7 driver = webdriver.Chrome()
 8 driver.get("https://ke.qq.com/")
 9 driver.maximize_window()
10 
11 """
12 以腾讯课堂登录为例,演示切换iframe
13 """
14 #首次登录,点击登录
15 driver.find_element_by_id("js_login").click()
16 time.sleep(1)
17 #选择QQ登录
18 driver.find_element_by_link_text("QQ登录").click()
19 
20 #切换ifarme:
21 #方式一:switch_to.frame(XXX),该方法支持的入参包含:id,name,webelement。
22 #注:drive.find_element_by_xxx的返回值是webelement
23 driver.switch_to.frame("login_frame_qq")
24 #driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@name='login_frame_qq']"))
25 #等待iframe存在,可见
26 time.sleep(1)
27 #点击账号密码登录
28 driver.find_element_by_id("switcher_plogin").click()
29 
30 #方式二:frame_to_be_available_and_switch_to_it(XXX),该方法支持的入参包含:id,name,webelement。
31 WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it("login_frame_qq"))
32 time.sleep(1)
33 
34 """-------------------------------------------"""
35 #当存在iframe嵌套时,必须逐级深入,不能跳级
36 #从当前的iframe中回到默认的页面中
37 driver.switch_to.default_content()
38 
39 #返回父级的iframe
40 driver.switch_to.parent_frame()

 

posted @ 2021-04-07 21:40  Chaman囍  阅读(180)  评论(0编辑  收藏  举报