selenium switch_to方法

本文介绍了使用Selenium进行网页自动化测试时如何处理iframe切换、弹出对话框alert以及多窗口切换。通过示例代码详细展示了在不同场景下如何运用switch_to方法进行操作,包括进入和退出iframe,接受或取消alert,以及在多个窗口间切换。这些技巧对于提升Selenium测试的效率至关重要。

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

iframe切换

driver.switch_to.frame() #根据元素id或 index切换
driver.switch_to.default_content() #切换到默认 frame
driver.switch_to.parent_frame() #切换到父级 fram

请添加图片描述

def test_iframe(self):
      self.driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
      self.driver.switch_to.frame("iframeResult")
      print(self.driver.find_element_by_id("draggable").text) # 打印'请拖拽我'
      # self.driver.switch_to.parent_frame()
      self.driver.switch_to.default_content()
      print(self.driver.find_element_by_id("submitBTN").text) #点击运行

弹出对话框alert切换

基本操作的方法有

  1. switch_to.alert():切换到当前页面上的警告框
  2. text:返回弹框文本信息
  3. accept():接受弹框,确认
  4. dismiss():取消弹框
  5. send_keys(keysToSend):发送文本至弹框

在这里插入图片描述

def test_alert(self):
      self.driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
      self.driver.switch_to.frame("iframeResult")
      drag = self.driver.find_element_by_id("draggable")
      drop = self.driver.find_element_by_id("droppable")
      action = ActionChains(self.driver)
      action.drag_and_drop(drag, drop).perform()
      sleep(2)
      alert = self.driver.switch_to.alert
      print(alert.text)
      alert.accept()
      # self.driver.switch_to.alert.accept()
      self.driver.switch_to.default_content()
      self.driver.find_element_by_id("submitBTN").click()
      sleep(3)

多窗口切换

处理流程

  1. 获取当前的窗口句柄(driver.current_window_handle)
  2. 获取当前会话下的所有窗口句柄(driver.window_handles)
  3. 切换窗口(driver.switch_to.window)
  4. 切回原窗口(driver.switch_to.window)
  5. 关闭当前窗口(driver.close)

操作流程:
先打开百度
点击登录窗口
再点击注册页面
再返回登录窗口

def test_window(self):
      self.driver.get("http://www.baidu.com")
      self.driver.find_element_by_link_text("登录").click()
      # print(self.driver.current_window_handle) # 当前的窗口句柄
      self. driver.find_element_by_link_text("立即注册").click()
      windows = self.driver.window_handles # 所有窗口句柄
      self.driver.switch_to.window(windows[-1])#定位到当前页面窗口(注册页面)
      self.driver.find_element_by_id("TANGRAM__PSP_4__userName").send_keys("username")
      self.driver.find_element_by_id("TANGRAM__PSP_4__phone").send_keys("12345678")
      sleep(2)
      # 切换回登录窗口
      self.driver.switch_to.window(windows[0])
      self.driver.find_element_by_id("TANGRAM__PSP_10__footerULoginBtn").click()

原创作者链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值