iframe切换和窗口切换

您所在的位置:网站首页 快速在多个ppt窗口之间切换页面的方法 iframe切换和窗口切换

iframe切换和窗口切换

2024-07-13 19:40| 来源: 网络整理| 查看: 265

今天继续讲知识点,关于切换,因为我们在元素定位的时候,明明在网页下面f12可以定位到,但是就是写代码的时候发现不行,今天的切换就可以解决这个问题

一、iframe切换

先抛出一个问题:

 1.1方式一:通过iframe标签的name属性进行切换 import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) driver.get('https://qzone.qq.com/') # 方式一:通过iframe标签的name属性进行切换 driver.switch_to.frame("login_frame") driver.find_element(By.ID, 'switcher_plogin').click() time.sleep(3) # 待3秒后退出 driver.quit()

 1.2方式二:先定位iframe,通过定位到的元素进行切换 先定位iframe,通过定位到的元素进行切换 import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) driver.get('https://qzone.qq.com/') # 方式二:先定位iframe,通过定位到的元素进行切换 login_frame = driver.find_element(By.XPATH, '//iframe[@id="login_frame"]') driver.switch_to.frame(login_frame) driver.find_element(By.ID, 'switcher_plogin').click() time.sleep(3) # 待3秒后退出 driver.quit()

 1.3方式三:通过iframe标签的下标索引位置,进行切换 import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) driver.get('https://qzone.qq.com/') # 方式三:通过iframe标签的下标索引位置,进行切换 driver.switch_to.frame(0) driver.find_element(By.ID, 'switcher_plogin').click() time.sleep(3) # 待3秒后退出 driver.quit()

 其他:如何从iframe中切换到原来的页面中

二、窗口切换 2.1切换进入新的窗口

打开一个新的窗口后,怎么在新的窗口标签页中,才有效?

import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) # 打开百度 driver.get('https://www.baidu.com/') # 在百度的输入框输入58同城,并点击百度一下按钮 driver.find_element(By.ID, 'kw').send_keys("58同城") driver.find_element(By.ID, 'su').click() # 选择百度页面搜索结果的第一个进行点击,进入新的窗口 driver.find_element(By.XPATH, "//a[@data-url='http://www.58.com']").click() # 获得所有窗口的句柄 all_handles = driver.window_handles # 通过获取句柄的方式切换到新打开的58同城窗口 driver.switch_to.window(all_handles[-1]) # 在新的窗口链接中(也就是打开的58同城页面中)的搜素框中输入python driver.find_element(By.XPATH, "//input[@id='keyword']").send_keys("python") time.sleep(3) # 待3秒后退出 driver.quit()

 2.2两个窗口之间的切换

比如,从新的窗口中切回去,怎么办?

import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) # 打开百度 driver.get('https://www.baidu.com/') # 在百度的输入框输入58同城,并点击百度一下按钮 driver.find_element(By.ID, 'kw').send_keys("58同城") driver.find_element(By.ID, 'su').click() # 选择百度页面搜索结果的第一个进行点击,进入新的窗口 driver.find_element(By.XPATH, "//a[@data-url='http://www.58.com']").click() # 获得所有窗口的句柄 all_handles = driver.window_handles # 通过获取句柄的方式切换到新打开的58同城窗口 driver.switch_to.window(all_handles[-1]) # 在新的窗口链接中(也就是打开的58同城页面中)的搜素框中输入python driver.find_element(By.XPATH, "//input[@id='keyword']").send_keys("python") # 如果我要返回原来的窗口,怎么切换?目前我这里只有两个窗口 # 选择句柄为第一个位置的,切回去 driver.switch_to.window(all_handles[0]) # 运行结果,此时已经显示原来的网页 time.sleep(3) # 待3秒后退出 driver.quit()

 2.3多个窗口的切换

如果在项目需求中,需要打开打开多个窗口,并不停的在多个网页之间来回切换,这种用代码如何来处理?

import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) # 打开百度 driver.get('https://www.baidu.com/') # 在百度的输入框输入58同城,并点击百度一下按钮 driver.find_element(By.ID, 'kw').send_keys("58同城") driver.find_element(By.ID, 'su').click() # 记录当前百度输入58的句柄 baidu_58_handle = driver.current_window_handle # 选择百度页面搜索结果的第一个进行点击,进入新的窗口 driver.find_element(By.XPATH, "//a[@data-url='http://www.58.com']").click() # 获得所有窗口的句柄 all_handles = driver.window_handles # 通过获取句柄的方式切换到新打开的58同城窗口 driver.switch_to.window(all_handles[-1]) # 在新的窗口链接中(也就是打开的58同城页面中)的搜素框中输入python driver.find_element(By.XPATH, "//input[@id='keyword']").send_keys("python") time.sleep(2) # 记录点击第一个58同城的句柄 no1_58_handle = driver.current_window_handle # 如果我要返回原来的窗口,怎么切换? driver.switch_to.window(baidu_58_handle) # 运行结果,此时已经显示原来的网页 # 那么我选择原来网页的其他的搜索结果进行点击,比如我选择下面的58同城找工作网 driver.find_element(By.XPATH, "//div[@id='5']").click() # 这里进行窗口切换,-1是最新的那个 driver.switch_to.window(all_handles[-1]) # 记录找工作58网的句柄 job58_handle = driver.current_window_handle # 接下来,想怎么切就怎么切换,只要前面有记录就可以 driver.switch_to.window(baidu_58_handle) driver.switch_to.window(no1_58_handle) driver.switch_to.window(job58_handle) time.sleep(5) # 待3秒后退出 driver.quit()

三、alert切换

在做项目的时候,偶尔会碰到一些alert弹窗,这种情况,如何来切换进入后对其进行操作呢?

""" alert弹窗切换:driver.switch_to.alert alert_object = driver.switch_to.alert alert_object的方法: accept():点击确定 dismiss():点击取消 send_keys():如果alert弹窗中有输入框,则可以使用该方法 alert_object的属性: text:弹出的文本内容 """ import time from selenium.webdriver import Chrome from selenium.webdriver.common.by import By driver = Chrome() driver.implicitly_wait(10) # 出现alert弹窗 driver.get(r'D:\pythonProject\web_05day\alert弹窗演示.html') driver.find_element(By.ID, 'btn').click() time.sleep(1) # 等1秒钟看效果 # 先切换进入弹窗,再按确认按钮 alert_object = driver.switch_to.alert alert_object.accept() # 弹窗上的取消按钮,我这里把它写成了一行 # driver.switch_to.alert.dismiss() driver.find_element(By.ID, 'user').send_keys("Excellent") time.sleep(3) # 待3秒后退出 driver.quit()

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3