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窗口之间的切换的更多相关文章

  1. selenium 窗口句柄之间的切换

    以前使用selenium时都是在单窗口的模式下,本次新增多窗口下的窗口之间切换 from selenium import webdriver from selenium.webdriver.commo ...

  2. Python+Selenium练习篇之19-多窗口之间切换

    本文来介绍如何处理driver在多窗口之间切换,想一下这样的场景,在页面A点击一个连接,会触发在新Tab或者新窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来的脚本是操作页面B的元 ...

  3. selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码

    目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...

  4. selenium多表单切换以及多窗口切换、警告窗处理

    selenium表单切换 在做UI自动化,有时候要定位的元素属性在页面上明明是唯一的.却怎么也不执行对元素的操作动作,这时候多半是iframe表单在作怪. 切入表单:iddriver.switch_t ...

  5. Selenium2+python自动化71-多个浏览器之间的切换【转载】

    前言 有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数. 举个简单例子:在做某些业务的时候,需要手机短信验证码,我不可 ...

  6. Windows和Frames之间的切换

    一些web应用程序有许多Frames或多个Windows. WebDriver支持使用“switchTo”的方法实现的窗口之间切换. driver.switchTo().window("wi ...

  7. 自动化测试-9.selenium多窗口句柄的切换

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...

  8. ios View之间的切换 屏幕旋转

    6.3  View之间的切换 在上面的练习中我们通过移动组件的位置和调整组件的大小来处理横向与纵向的界面布局.但是在界面中有很多组件的时候,对每个组件都进行这样的操作确实是一个麻烦的事情.下面我们看看 ...

  9. Web自动化测试 五 ----- selenium的等待和切换

    一.selenium的三种等待 当执行python的selenium代码时,如果需要定位一个元素或者点击一个元素,需要考虑到网速等多方面原因,导致页面加载速度慢,元素还未加载出来,这样就会导致找不到对 ...

  10. Windows同一软件不同窗口如何快速切换

    windows快速切换应用的快捷键是Alt + Tab 这个快捷键可以在多个应用之间快速切换,但是软件多开时,而此时我只想在同一软件内的多个窗口切换,一切换好多个窗口扑面而来,我还要去用找并用鼠标点击 ...

随机推荐

  1. JAVA下唯一一款搞定OLTP+OLAP的强类型查询这就是最好用的ORM相见恨晚

    JAVA下唯一一款搞定OLTP+OLAP的强类型查询这就是最好用的ORM相见恨晚 介绍 首先非常感谢 FreeSQL 提供的部分源码,让我借鉴了不少功能点,整体设计并没有参考FreeSQL(因为jav ...

  2. 特工17Agent17汉化版游戏破解金币方法修改破解金币的增加方法

    又是一个renpy游戏,昨晚搞了半个小时搞定的,其实这个游戏要赚钱也不难,就是点点点就可以了,但是我觉得还是挺费劲的,因为好多道具都很贵,攒钱又不怎么容易,花钱的地方还挺多的,所以干脆不如直接破解了算 ...

  3. Go pprof 认知到实践

    快速开始 测试环境:go version go1.22.2 windows/amd64,源代码开源在 https://github.com/oldme-git/teach-study/tree/mas ...

  4. 解决VMware Workstation 与 Device/Credential Guard不兼容

    参考文档 https://blog.csdn.net/lizhengze1117/article/details/106566060

  5. ls的输出格式

    在Linux中,如果在一个目录下面执行ls -al命令,输出格式如下: ls -al总共输出7列,下面对每一列进行说明. 第一列表示这个文件的权限与类型,它总共有10位,每个位的作用如下图所示: 其中 ...

  6. CentOS7部署Docker(联网)

    一.参考地址 https://blog.csdn.net/m0_49762804/article/details/131398587 二.Docker安装 安装依赖环境,yum-utils ## 检查 ...

  7. 超全、超简单Vue微信公众号授权登录指南

    <template> <div id="app"> <h1>微信授权登陆</h1> <div> <div> ...

  8. .NET Aspire 正式发布:简化 .NET 云原生开发

    .NET团队北京时间2024年5月22日已正式发布.NET Aspire ,在博客文章里做了详细的介绍:.NET Aspire 正式发布:简化 .NET 云原生开发 - .NET 博客 (micros ...

  9. containerd 源码分析:kubelet 和 containerd 交互

    0. 前言 Kubernetes:kubelet 源码分析之创建 pod 流程 介绍了 kubelet 创建 pod 的流程,其中介绍了 kubelet 调用 runtime cri 接口创建 pod ...

  10. springboot 整合 recketMQ 详细步骤

    前提 RocketMQ的部署环境可用 1 依赖包 <dependency> <groupId>org.apache.rocketmq</groupId> <a ...