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()