selenium 窗口处理相关操作。

窗口操作

# 窗口最大化
driver.maximize_window()
# 窗口最小化
driver.minimize_window()
# 窗口全屏化
driver.fullscreen_window()# 获取窗口大小
size = driver.get_window_size()
width = size.get("width")
height = size.get("height")
# 设置窗口大小
driver.set_window_size(1024, 768)# 获取窗口左上角坐标位置
position = driver.get_window_position()
x = position.get('x')
y = position.get('y')
# 设置窗口左上角坐标位置
driver.set_window_position(0, 0)# 窗口截图
driver.save_screenshot('./image.png')
# 对特定元素截图
ele = driver.find_element(By.ID, 'su')
ele.screenshot('./image.png')

多窗口场景处理

网页上点击某个链接,有可能会打开一个新的标签页。这种情况,需要切换到新的窗口来执行后续操作。

每个窗口都有一个唯一标识句柄,通过句柄来切换窗口。

# 当前标签页
driver.current_window_handle# 所有标签页
driver.window_handles# 切换标签页
driver.switch_to.window(handle)# 关闭当前窗口
driver.close()# 关闭所有窗口,退出驱动
driver.quit()""" selenium > 4.0 """
# 新建浏览器标签页并切换 handle
driver.switch_to.new_window('tab')
# 新建浏览器窗体并切换 handle
driver.switch_to.new_window('window')

示例

from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestSwitchWindow:def setup(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(3)self.driver.get("http://www.baidu.com")def teardown(self):self.driver.quit()def test_switch_register_to_home(self):""" 百度首页,点击注册,会新打开一个注册页面;在注册页面输入账号密码后切换回第一个窗口"""self.driver.find_element(By.LINK_TEXT, "登录").click()self.driver.find_element(By.LINK_TEXT, "立即注册").click()home_handle = self.driver.current_window_handle  # 当前窗口句柄windows = self.driver.window_handles  # 所有窗口句柄:list# 切换到最后一个窗口,也就是新打开的「注册」页面self.driver.switch_to.window(windows[-1])self.driver.find_element(By.ID, "TANGRAM__PSP_4__userName").send_keys("login_username")# 切换到第一个,输入用户名密码self.driver.switch_to.window(home_handle)# self.driver.switch_to.window(windows[0])self.driver.find_element(By.ID, "TANGRAM__PSP_11__userName").send_keys("login_username")def test_switch_windows_by_loop(self):""" 打开多个窗口,最后定位到「百度图片窗口」"""home_handle = self.driver.current_window_handle  # 当前窗口句柄tab_texts = ["新闻", "视频", "图片", "贴吧"]for text in tab_texts:self.driver.find_element(By.LINK_TEXT, text).click()self.driver.switch_to.window(home_handle)for handle in self.driver.window_handles:self.driver.switch_to.window(handle)if "百度图片" in self.driver.title:breakassert self.driver.title == "百度图片-发现多彩世界"def test_window_close(self):""" 通过百度首页打开新闻页面,然后关闭首页"""home_handle = self.driver.current_window_handleself.driver.find_element(By.LINK_TEXT, "新闻").click()self.driver.close()# print(self.driver.title)  # 窗口关闭后,再次操作报错:NoSuchWindowException# 因为首页已经被关闭,需要手动切换到已存在的窗口上self.driver.switch_to.window(self.driver.window_handles[-1])assert "百度新闻" in self.driver.title

【selenium】窗口操作相关推荐

  1. selenium之窗口操作

    前言 webdriver经常会遇到在多个窗口之间切换的操作,例如在A窗口操作某个元素跳转到B窗口,然后又进入C窗口,此时如果需要进入A\B窗口操作就需要用到特殊的窗口处理方法 窗口处理方法 获取所有窗 ...

  2. py+seleneium(多窗口操作、alert窗口操作、元素、上传的一些方法)

    在使用selenium时,会出现一些情况,就是有多个窗口的情况selenium怎么从一个窗口跳入到另外一个窗口操作,下面还是看代码 handle1 = driver.current_window_ha ...

  3. 爬虫Spider 08 - chromedriver设置无界面模式 | selenium - 键盘操作 | 鼠标操作 | 切换页面 | iframe子框架 | scrapy框架

    文章目录 Spider 07回顾 cookie模拟登陆 三个池子 selenium+phantomjs/chrome/firefox Spider 08 笔记 chromedriver设置无界面模式 ...

  4. 搞定vim的窗口操作

    最近在给学生演示数据结构代码时,发现用一般的方法总会有不方便,如果使用ide又觉得太浪费了,后来觉得用vim就够了,使用buffer总会需要页面调来跳出,学生看起来容易迷糊.所以就研究了下vim的窗口 ...

  5. python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解

    本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作.分享给大家供大家参考,具体如下: 有些时候,我们需要使用弹出窗口,对程序的运行参数进行设置.有两种选择 一.标准窗口 如果只 ...

  6. python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个ht ...

  7. MySQL数据库安装-Windows10为例【超级详细安装过程(每一步的截图)、检测安装是否成功、登录数据库并查看版本号、将MySQL添加到环境变量中、在命令行窗口操作数据库】

    哈哈,这是在哔哩哔哩网站上 看的 MySQL安装步骤. 我安装的时候,截截图,希望对大家 有所帮助. 链接:https://pan.baidu.com/s/1fKFQCVHMQOmbg84UyGrKB ...

  8. Spark Streaming的窗口操作

    2019独角兽企业重金招聘Python工程师标准>>> Spark Streaming的窗口操作 博客分类: spark Spark Streaming的Window Operati ...

  9. SparkStreaming - 窗口函数(窗口操作)

    窗口操作就是把多个采集周期设置成一个窗口,一起来计算,然后进行滑动,根据设置的滑动大小. 窗口大小和滑动大小,要是采集周期的倍数 package date_10_17_SparkStreamingim ...

  10. 最大化窗口设置_Qt学习笔记4(窗口操作及插入图片)

    窗口操作: Qt全屏显示函数 showFullScreen() Qt最大化显示函数 showMaximized() Qt最小化显示函数 showMinimized() Qt固定尺寸显示函数 resiz ...

最新文章

  1. Java EE 简介
  2. jstat和jmap使用
  3. 从(0,0)到(n,n)——广度优先及其改进
  4. python等差数列末项计算_Python 30道高频面试题及详细解答
  5. MySQL-[Err] 1055 - Expression #1
  6. Firefox开发者工具里的CSS Flexbox Inspector
  7. javascript --- 属性描述符
  8. uniapp 子组件 props拿不到数据_来吧!一文彻底搞定Vue组件!
  9. Boot loader: Grub入门(转)
  10. 一不小心就踩坑的fail-fast是个什么鬼?
  11. 电脑突然无法播放html音频,电脑无法播放音频怎么办
  12. android 9宫格输入法,Android/WP原生九宫格输入法对比_诺基亚 Lumia 925_手机iOS频道-中关村在线...
  13. android同步方法和对象的区别是什么,(4.1.10.8)Android Handler之同步屏障机制(sync barrier)...
  14. Kernel启动时 驱动是如何加载的module_init,加载的次序如何;略见本文
  15. CodeSmith学习笔记(一):设置属性为打开文件,保存文件
  16. 毕设题目:Matlab元胞自动机城市规划
  17. 计算机等级考试数据库三级知识点吐血总结!!!
  18. 零基础学计算机编程教学视频教程,IT编程入门教程视频免费资源分享
  19. 如何卸载deepfreeze(冰点还原)
  20. SpringCloud(一)手把手入门

热门文章

  1. 基于jsp+mysql+Spring的SSM在线蛋糕商城销售网站项目设计和实现
  2. 用C程序编简易双人五子棋
  3. MPC-HC视频播放器
  4. 1156 Sexy Primes (20 point(s)) PAT 素数
  5. 租用服务器怎么修改密码,把租的号改密码-租用的服务器怎么改密码?
  6. Java基础 -> 为什么⽤线程池?线程池的创建?
  7. 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二)
  8. 第十一章 Caché 命令大全 HALT 命令
  9. navigateTo:fail can not navigateTo a tabbar page
  10. react devtools插件报错处理