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 这个快捷键可以在多个应用之间快速切换,但是软件多开时,而此时我只想在同一软件内的多个窗口切换,一切换好多个窗口扑面而来,我还要去用找并用鼠标点击 ...
随机推荐
- SAP HANA计算视图
Text. Text. Text. Text. Text. Text. Text. Text. Text. Text. 越来越多的SAP用户正在将SAP HANA实施为现有SAP BW的基础和数据库. ...
- WebKit中WTFMove实现
WTFMove定义位置: WTF/Source/wtf/StdLibExtras.h,其定义如下: #define WTFMove(value) std::move<WTF::CheckMove ...
- 4G EPS 中的 PLMN 选择
目录 文章目录 目录 前文列表 PLMN 选择 前文列表 <4G EPS 中的系统消息类型> PLMN 选择 UE 开机后的第一件事情就是完成小区搜索,即完成和 eNB 的牵手.在牵手成功 ...
- pageoffice在线打开word文件加盖电子印章
一.加盖印章的 js 方法 js方法 二.常见使用场景 1.常规盖章.弹出用户名.密码输入框,选择对应印章. 点击盖章按钮弹出用户名密码登录框,登录以后显示选择电子印章. document.getEl ...
- FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比
<FFmpeg开发实战:从零基础到短视频上线>一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高.然而有的视频文件并非如此,如果按照A ...
- Linux搭建ES集群环境
搭建ES集群环境 准备 三台服务器 其中一台为主机节点 ES安装自行上传到各个节点home路径下并解压重命名 集群名称:cluster-big-data同一个集群多个节点,集群名称必须相同,节点名称不 ...
- kubernets之高级调度
一 节点的污点以及pod的容忍度以及节点的亲缘性对比 1.1 首先需要介绍的是节点的污点以及pod的污点容忍度 污点是节点的属性,容忍度是pod的属性,只有当一个pod的容忍度包含节点的污点,pod才 ...
- Android 13 - Media框架(9)- NuPlayer::Decoder
关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 NuPlayer::Decoder,学习如何将 MediaCodec wrap 成一个强大的 Decoder.这一节会提前讲到 M ...
- Dubbo实战教程
"Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案." ...
- 『手撕Vue-CLI』获取下载目录
开篇 在上一篇文章中,简单的对 Nue-CLI 的代码通过函数柯里化优化了一下,这一次来实现一个获取下载目录的功能. 背景 在 Nue-CLI 中,我现在实现的是 create 指令,这个指令本质就是 ...