码迷,mamicode.com
首页 > 编程语言 > 详细

python selenium中iframe切换、window切换方法

时间:2018-11-20 16:24:35      阅读:462      评论:0      收藏:0      [点我收藏+]

标签:[1]   text   打开   one   str   size   ble   nbsp   windows   

一、selenium中iframe切换方法:

    方法一:switch_to.frame

      frame函数中提供了三种定位方法:

    •   driver.switch_to.frame(‘frame_name‘)
    •   driver.switch_to.frame(1)
    •   driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

  以腾讯课堂为例:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get(https://ke.qq.com/)
driver.implicitly_wait(20)
driver.maximize_window()
# 点击登录
driver.find_element_by_id(js_login).click()
# 点击QQ登陆
driver.find_element_by_xpath(//div[@class="content-btns"]/a[1]).click()
# 切换iframe
driver.switch_to.frame(login_frame_qq)
# 点击账号密码登陆
driver.find_element_by_id(switcher_plogin).click()
# 输入帐号
driver.find_element_by_id(u).send_keys(*********)
# 输入密码
driver.find_element_by_id(p).send_keys(*********)
# 点击登录
driver.find_element_by_id(login_button).click()

sleep(3)
driver.quit()

    方法二:expected_conditions中frame_to_be_available_and_switch_to_it

      实现步骤:结合显性等待方法,等待iframe框出现后自动切换iframe,其方法内部调用了 switch_to.frame 方法(可以看源码),所以定位iframe的方法与方法一相同。

  以腾讯课堂为例:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

driver = webdriver.Chrome()
driver.get(https://ke.qq.com/)
driver.implicitly_wait(20)
driver.maximize_window()
# 点击登录
driver.find_element_by_id(js_login).click()
# 点击QQ登陆
driver.find_element_by_xpath(//div[@class="content-btns"]/a[1]).click()
# 等待iframe出现,自动切换iframe
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it("login_frame_qq"))
# 点击账号密码登陆
driver.find_element_by_id(switcher_plogin).click()
# 输入帐号
driver.find_element_by_id(u).send_keys(*********)
# 输入密码
driver.find_element_by_id(p).send_keys(*********)
# 点击登录
driver.find_element_by_id(login_button).click()

sleep(3)
driver.quit()

 

二、selenium中window切换方法:

    方法一:switch_to.window

  百度搜索腾讯课堂并打开  

from selenium import webdriver
from time import sleep

# 设置浏览器配置,取消‘Chrome正在受到自动软件的控制’的提示语
option = webdriver.ChromeOptions()
option.add_argument(disable-infobars)
# 打开chrome浏览器,并执行设置
driver = webdriver.Chrome(chrome_options=option)
driver.implicitly_wait(30)
driver.maximize_window()
# 打开百度首页
driver.get("https://www.baidu.com")
# 输入 腾讯课堂
driver.find_element_by_id(kw).send_keys(腾讯课堂)
# 点击 百度一下
driver.find_element_by_id("su").click()
# 获取所有窗口
windows = driver.window_handles
print(切换之前的窗口{}.format(windows))
# 点击腾讯课堂链接
driver.find_elements_by_xpath(//a[text()="_专业的在线教育平台(ke.qq.com)"])[0].click()
# 切换到新窗口
driver.switch_to.window(driver.window_handles[-1])
print(切换至后的窗口{}.format(driver.current_window_handle))
# 点击登录按钮
driver.find_element_by_id(js_login).click()

 

     方法二:expected_conditions中new_window_is_opened

      实现步骤:结合显性等待方法,等待新窗口打开,再进行切换

  百度搜索腾讯课堂并打开

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep

# 设置浏览器配置,取消‘Chrome正在受到自动软件的控制’的提示语
option = webdriver.ChromeOptions()
option.add_argument(disable-infobars)
# 打开chrome浏览器,并执行设置
driver = webdriver.Chrome(chrome_options=option)
driver.implicitly_wait(30)
driver.maximize_window()
# 打开百度首页
driver.get("https://www.baidu.com")
# 输入 腾讯课堂
driver.find_element_by_id(kw).send_keys(腾讯课堂)
# 点击 百度一下
driver.find_element_by_id("su").click()
# 获取所有窗口
windows = driver.window_handles
print(切换之前的窗口{}.format(windows))
# 点击腾讯课堂链接
driver.find_elements_by_xpath(//a[text()="_专业的在线教育平台(ke.qq.com)"])[0].click()
# 判断新窗口打开
WebDriverWait(driver,10).until(EC.new_window_is_opened(windows))
# 切换到新窗口
driver.switch_to.window(driver.window_handles[-1])
print(切换至后的窗口{}.format(driver.current_window_handle))
# 点击登录按钮
driver.find_element_by_id(js_login).click()

 

python selenium中iframe切换、window切换方法

标签:[1]   text   打开   one   str   size   ble   nbsp   windows   

原文地址:https://www.cnblogs.com/lizhe860/p/9989265.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!