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 这个快捷键可以在多个应用之间快速切换,但是软件多开时,而此时我只想在同一软件内的多个窗口切换,一切换好多个窗口扑面而来,我还要去用找并用鼠标点击 ...
随机推荐
- C/C++如何写调试宏
1. 调试宏以及测试 在写代码时,不可避免需要打印提示.警告.错误等信息,且要灵活控制打印信息的级别.另外,还有可能需要使用宏来控制代码段(主要是调试代码段)是否执行.为此,本文提供一种调试宏定义方案 ...
- HTTPS 是如何进行安全传输的 ?
概述 现代密码学对信息的处理主要离不开以下的三种形式: 摘要:主要用于数据校验,例如存储密码等,摘要是对信息进行单向的哈希,改变信息的原有形态,因为哈希函数的特点是易变性(即使微小的变化也会产生完全不 ...
- ansible系列(21)--ansible的变量注册Register
1. 变量注册Register register 关键字可以将某个 task 任务结果存储至变量中,最后使用 debug模块 输出变量内容,可以用于后续排障: 示例一:register的基本使用: # ...
- 如何提高WordPress的加载速度
针对wordpress加载速度慢的原因: 1. 由于Wordpress系统默认使用谷歌字体,在国内谷歌域名被屏蔽,所以导致操作反应慢.对于很多商业主题默认使用了谷歌字体.谷歌ajax库.谷歌地图等谷歌 ...
- SQL中常用的字符串REPLACE函数和LEN函数详解!
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- URP(Universal Render Pipeline)渲染管线在使用中的一些分享
本篇文章整理了URP管线使用中的一些简单的心得记述 1.使用ScriptableRendererFeature自定义渲染特性 在内建(Build-in)管线中可以使用CommandBuffer并添加到 ...
- java学习之旅(day.04)
运算符 算术运算符:+ ,- ,* ,/,%(取余或模运算), ++(自增),-- (自减) 赋值运算符:= 关系运算符:>, <,>=, <=, ==, !=(不等于),in ...
- 文字转语音 - 搭建微软tts整合web服务提供api接口(免费)
微软tts是业界公认文字转语音效果最佳本文使用docker搭建微软tts服务并提供api接口对外提供服务对接官方免费在线体验接口,搭建后可免费进行调用使用,不保证永久稳定可用 调用方式url:http ...
- 微信iOS消息拦截插件教程-第一个tweak编译过程
-安装好theos框架之后,下面用一个简单的例子进行说明编译过程 -新建一个代码目录 -进入terminal,cd到刚才的目录中 1.进入目录 2.执行/opt/theos/bin/nic.pl 3. ...
- C++笔记(7)成员初始化列表
成员初始化列表由逗号分隔的初始化列表组成(前面带冒号),它位于参数列调的右括号之后,函数体左括号之前.如果数据成员的名称为mdata,并需要将它初始化为val,则初始化器为mdata(val). Cl ...