selenium窗口切换

本文介绍了在Selenium自动化测试中,何时需要进行窗口和iframe的切换,以及如何使用`driver.switch_to.window()`和`driver.switch_to.frame()`方法。通过QQ邮箱登录和百度新闻的示例详细解释了切换过程,帮助理解不同场景下的切换操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.何时需要切换窗口呢?

(1) 标签内部存在iframe,普通的方式无法直接定位到iframe内部的标签元素。需要切换;

(2) 一个浏览器对象,存在多个标签选项卡。需要切换。

(3). seleniumdriver.switch_to.window()方法和driver.switch_to.frame()方法的区别是什么?

driver.switch_to.window(): 切换窗口,一般是指多个标签选项卡之间的切换,每一个选项卡都是一个window窗口;

driver.switch_to.frame(): 切换html内部框架,一般是在html嵌套的有<iframe>标签时会使用。


2.iframe标签举例(QQ邮箱登录)

  1. from selenium import webdriver
  2. from selenium.webdriver.support.wait import WebDriverWait
  3. import time
  4. driver = webdriver.Firefox()
  5. driver.get('https://mail.qq.com/')
  6. #driver.switch_to.frame()切换到iframe标签
  7. driver.switch_to.frame(driver.find_element_by_id('login_frame'))
  8. driver.find_element_by_id('switcher_plogin').click()

  9. username = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id('u'))
  10. username.clear()
  11. username.send_keys('QQ号')

  12. password = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id('p'))
  13. password.clear()
  14. password.send_keys('密码')

  15. driver.find_element_by_id('login_button').click()
  16. time.sleep(3)
  17. driver.close()

3.切换窗口举例(百度新闻)

  1. import time
  2. from selenium import webdriver
  3. # 注意:出现无法定位此元素时,可能是要切换窗口,也可能是它更新较快,标签或属性已经发生了变化
  4. driver = webdriver.Firefox()
  5. driver.get('https://www.baidu.com/')

  6. driver.find_element_by_link_text('新闻').click()
  7. # driver.current_window_handle()获取当前窗口操作句柄
  8. # driver.title获取当前窗口标签选项卡名称
  9. current_window = driver.current_window_handle
  10. print(current_window, driver.title)

  11. driver.find_element_by_css_selector('strong a').click()
  12. current_window = driver.current_window_handle
  13. print(current_window,driver.title)
  14. # 获取所有窗口操作句柄
  15. windows = driver.window_handles
  16. print(windows, driver.title)
  17. for win in windows:
  18. if current_window != win:
  19. # 切换窗口
  20. driver.switch_to.window(win)


  21. current_window = driver.current_window_handle
  22. print(current_window, driver.title)
  23. time.sleep(6)

  24. title =driver.find_element_by_css_selector('.header .title').text
  25. print(title)
  26. driver.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值