【selenium】窗口操作

这篇具有很好参考价值的文章主要介绍了【selenium】窗口操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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') 

示例文章来源地址https://www.toymoban.com/news/detail-540860.html

from selenium import webdriver
from selenium.webdriver.common.by import By

class 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:
                break
        assert self.driver.title == "百度图片-发现多彩世界"

    def test_window_close(self):
        """ 通过百度首页打开新闻页面,然后关闭首页
        """
        home_handle = self.driver.current_window_handle
        self.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】窗口操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Windows桌面远程后,unity程序无法全屏显示或者显示窗口默认最小化解决方法

    按以下步骤操作 1、Win+R打开运行,然后输入regedit打开注册表 2、根据计算机HKEY_CURRENT_USERSoftwareDefaultCompany路径找到DefaultCompany的文件夹 3、在DefaultCompany文件夹下找到unity打包时exe文件对应名称的文件夹,右键删除整个文件夹,删除后再去启动unity.exe程序即可恢复正常显示画

    2024年04月10日
    浏览(82)
  • electron在最小化窗口后,任务栏右键关闭再托盘唤起黑屏的解决方法

    在点击托盘唤醒的回调函数下我的代码是这样的: 因为我想要最小化后再唤醒可以回到原始窗口状态,比如最大化。但是这么唤醒后会导致页面黑屏,在找了很多文档无果。最后在我试验再次调用.show后成功唤醒了 所以 ,最后我的解决方案是在restore后再次调用show方法进行展

    2024年02月11日
    浏览(106)
  • 【Qt UI相关】Qt中如何控制 窗口的最大化、最小化和关闭按钮?一文带你掌握用法

    窗口的最大化、最小化和关闭按钮通常是由操作系统的窗口管理器控制的,而不是由应用程序控制的。这些按钮的行为(例如点击最大化按钮会将窗口的大小调整为屏幕的大小)是由窗口管理器实现的,应用程序通常不能改变这些行为。 在 Qt 中,你可以通过 QWidget::setWindow

    2024年02月11日
    浏览(42)
  • 机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

    训练集是有N个独立同分布的样本组成,即每个样本(x,y)是独立的从相同的分布中抽取的。这个真实的分布未知 输入空间X和输出空间Y构成样本空间,对于样本空间中的样本(x, y)∈X x Y,假定x和y之间可通过一个未知的真实隐射y=g(x)来描述,或者通过真实条件概率分布来描述。

    2024年02月09日
    浏览(53)
  • 最小化安装移动云大云操作系统--BCLinux-for-Euler-22.10-everything-x86_64-230316版

    CentOS 结束技术支持,转为RHEL的前置stream版本后,国内开源Linux服务器OS生态转向了开源龙蜥和开源欧拉两大开源社区,对应衍生出了一系列商用Linux服务器系统。BCLinux-for-Euler-22.10是中国移动基于开源欧拉操作系统22.03社区版本深度定制的企业级X86服务器通用版操作系统。本文

    2024年02月11日
    浏览(59)
  • DFA的最小化

    一、实验目的 1.熟练掌握DFA与NFA的定义与有关概念。 2.理解并掌握确定的有穷自动机的最小化等算法。 二、实验要求 输入:DFA 输出:最小化的DFA 三、实验过程 1.化简DFA关键在于把它的状态集分成一些两两互不相交的子集,使得任何两个不相交的子集间的状态都是可区分

    2024年02月09日
    浏览(52)
  • LeetCode——最小化字符串长度

    目录 一、题目 二、题目解读  三、代码  1、set去重 2、用一个二进制数记录每个字母是否出现过 6462. 最小化字符串长度 - 力扣(Leetcode) 给你一个下标从  0  开始的字符串  s  ,重复执行下述操作  任意  次: 在字符串中选出一个下标  i  ,并使  c  为字符串下标  i

    2024年02月08日
    浏览(62)
  • QT最小化程序到托盘运行

    实现程序关闭时最小化托盘的功能 托盘实现显示主页面和退出的功能 支持扩展,直接引用TrayIcon类即可,对外暴露接口 单例实现,可复用 注:博主所有资源永久免费,若有帮助,请点赞转发是对我莫大的帮助 注:博主本人学习过程的分享,引用他人的文章皆会标注原作者

    2024年02月05日
    浏览(51)
  • LabVIEW开发最小化5G系统测试平台

    LabVIEW开发最小化5G系统测试平台 由于具有大量存储能力和数据的应用程序的智能手机的激增,当前一代产品被迫提高其吞吐效率。正交频分复用由于其卓越的品质,如单抽头均衡和具有成本效益的实施,现在被广泛用作物理层技术。这些好处是以严格的同步、正交性和高功耗

    2024年02月12日
    浏览(41)
  • unity发布设置(最小化、置顶、限制单开)

    1. 勾上下图标红处,发布后可防止按windows键缩小  2.发布后程序默认最小化 3.发布的程序只能开一个进程

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包