selenium窗口之间的切换
import time
from selenium.webdriver import Edge
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys # 键盘输入
# 1.创建浏览器对象
web = Edge()
# 2.打开一个网址
web.get("https://www.17k.com/")
# 找到某个元素,点击它
el = web.find_element(By.XPATH, '/html/body/div[4]/div[2]/div[2]/div[1]/div/h3[1]').click()
# 虽然切换了窗口但是selenium的眼里,窗口没有切换过去
web.switch_to.window(web.window_handles[-1])
time.sleep(1) # 让浏览器缓一会,等他加载出来
# 在新窗口提取内容
text = web.find_element(By.XPATH, '//*[@id="bookInfo"]/dd/div[1]/p/a').text
print(text)
time.sleep(1) # 让浏览器缓一会,等他加载出来
# 关掉子窗口
web.close()
# 变更selenium的视角,回到原来的窗口
web.switch_to.window(web.window_handles[0])
print(web.find_element(By.XPATH, '/html/body/div[4]/div[2]/div[2]/div[1]/div/h3[1]/a').text)
'''
# 如果页面中遇到了 iframe如何处理
'''
web.get('https://www.rcrlw.com/pr/120845-3-1.html')
# time.sleep(5)
web.implicitly_wait(1) # 增加隐式等待 ,一直等待整个页面加载完成,直到超时
# 这里输出的是未进入iframe的内容
print(web.find_element(By.XPATH, '/html/head/title'))
# <selenium.webdriver.remote.webelement.WebElement
# (session="0f087508243dacde3bd65076e37e4d14",
# element="86a6f8cd-0fe4-44b4-8bac-2c117b21fe75")>
# 处理iframe的话,必须先拿到iframe,然后切换视角到iframe,再然后才可以拿数据
iframe = web.find_element(By.XPATH, '//*[@id="playleft"]/iframe')
web.switch_to.frame(iframe) # 切换到iframe
web.implicitly_wait(1) # 增加隐式等待 ,一直等待整个页面加载完成,直到超时
# 这里输出的是frame里面的内容
print(web.find_element(By.XPATH, '/html/head/title'))
# <selenium.webdriver.remote.webelement.WebElement
# (session="0f087508243dacde3bd65076e37e4d14",
# element="19298e88-1b6a-46d9-bf0b-dabc897ad116")>
web.switch_to.default_content() # 切换回原页面
# 这里输出的是出去iframe的内容
print(web.find_element(By.XPATH, '/html/head/title'))
# <selenium.webdriver.remote.webelement.WebElement
# (session="0f087508243dacde3bd65076e37e4d14",
# element="86a6f8cd-0fe4-44b4-8bac-2c117b21fe75")>
selenium窗口之间的切换的更多相关文章
- selenium 窗口句柄之间的切换
以前使用selenium时都是在单窗口的模式下,本次新增多窗口下的窗口之间切换 from selenium import webdriver from selenium.webdriver.commo ...
- Python+Selenium练习篇之19-多窗口之间切换
本文来介绍如何处理driver在多窗口之间切换,想一下这样的场景,在页面A点击一个连接,会触发在新Tab或者新窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来的脚本是操作页面B的元 ...
- selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码
目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...
- selenium多表单切换以及多窗口切换、警告窗处理
selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...
- Selenium2+python自动化71-多个浏览器之间的切换【转载】
前言 有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数. 举个简单例子:在做某些业务的时候,需要手机短信验证码,我不可 ...
- Windows和Frames之间的切换
一些web应用程序有许多Frames或多个Windows. WebDriver支持使用“switchTo”的方法实现的窗口之间切换. driver.switchTo().window("wi ...
- 自动化测试-9.selenium多窗口句柄的切换
前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...
- ios View之间的切换 屏幕旋转
6.3 View之间的切换 在上面的练习中我们通过移动组件的位置和调整组件的大小来处理横向与纵向的界面布局.但是在界面中有很多组件的时候,对每个组件都进行这样的操作确实是一个麻烦的事情.下面我们看看 ...
- Web自动化测试 五 ----- selenium的等待和切换
一.selenium的三种等待 当执行python的selenium代码时,如果需要定位一个元素或者点击一个元素,需要考虑到网速等多方面原因,导致页面加载速度慢,元素还未加载出来,这样就会导致找不到对 ...
- Windows同一软件不同窗口如何快速切换
windows快速切换应用的快捷键是Alt + Tab 这个快捷键可以在多个应用之间快速切换,但是软件多开时,而此时我只想在同一软件内的多个窗口切换,一切换好多个窗口扑面而来,我还要去用找并用鼠标点击 ...
随机推荐
- ITIL现有版本之间的区别
时代在变化,运维管理理论也在不断演进升级,不断学习是运维人的良好品质:虽然人有的时候会懈怠,理论学习的道路也较单调乏味,但终究还是要跟上时代的步调才能适应新的变化
- ruby和glang的md5和sha1加密对比
ruby和glang的md5和sha1加密对比 package main import ( "crypto/md5" "crypto/sha1" "f ...
- WebKist Inside: CSS 样式表的组成
1 StyleSheet 一张 StyleSheet 由一系列 Rules 组成,这些 Rules 可以分成 2 大类: 1 Style Rule 2 At-Rule 下面的例子展示了 Style R ...
- fastposter v2.9.2 最简海报生成器
fastposter v2.9.2 程序员必备海报生成器 fastposter海报生成器是一款快速开发海报的工具.只需上传一张背景图,在对应的位置放上组件(文字.图片.二维.头像)即可生成海报. 点击 ...
- 一次glide内存泄漏排查分析
glide是一款非常优秀的图片加载框架,目前很多项目在使用.提供了非常方法,在此,笔者就不一一列举了,可以到官网查找. 目前项目在做内存排查,因为是车机项目,之前开发的时候没有注意内存方面的问题(车机 ...
- CSRF(Pikachu靶场练习)
CSRF(get) 自己随便输点东西,回显登录失败,查看源码没发现什么 点开提示,登录进去看看 看到可以修改个人信息,我们把居住改成China,修改成功,没发现urlhttp://127.0.0.1/ ...
- Vue3 项目
创建 Vue3 项目的步骤如下: 安装 Node.js Vue3 需要依赖 Node.js 环境,因此需要先安装 Node.js.可以从官网下载 Node.js 的安装包并安装,也可以使用包管理器安装 ...
- JDK源码阅读-------自学笔记(十)(java.lang.Integer包装类初探)
自动装箱和拆箱 JDK1.5后,Java引入了自动装箱(autoboxing)/拆箱(unboxing) 自动装箱 基本数据类型在需要时自动转化为对象 自动装箱 对象在需要时自动转化为基本数据类型 注 ...
- 用 C 语言开发一门编程语言 — 跨平台的可移植性
目录 文章目录 目录 前文列表 实现跨平台的可移植性 使用预处理器指令 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器l> 实现跨平台的可移植性 理想情况下,我希望我的代码可以 ...
- Selenium4自动化测试8--控件获取数据--上传、下载、https和切换分页
10-上传 上传不能模拟用户在页面上选择本地文件,只能先把要上传的文件先准备好在代码里上传 import time from selenium.webdriver.support.select imp ...