Robot framework 在同一个浏览器中切换不同选项卡,通过title来定位选项卡。Title存在不唯一的情况,选择不同的选项卡有一些困难。下面的教程,通过修改selenium配置文件,来实现更加便捷的操作。

操作如下:

D:\Python27\Lib\site-packages\robotframework_selenium2library-1.1.0-py2.7.egg\Selenium2Library\locators  (根据自身情况而定)

中的windowmanager.py 增加了方法

def select_by_handle(self, browser, toHandle):

browser.switch_to_window(toHandle)

def get_window_handles(self, browser):

return [ window_info[0] for window_info in self._get_window_infos(browser) ]

def get_current_window_handle(self, browser):

return browser.get_current_window_handle()

D:\Python27\Lib\site-packages\robotframework_selenium2library-1.1.0-py2.7.egg\Selenium2Library\keywords

中的_browsermanagement.py 增加如下方法

def select_window_by_handle(self, locator=None):

self._window_manager.select_by_handle(self._current_browser(), locator)

def get_window_handles(self):

"""Returns and logs handles of all windows known to the browser."""

return self._log_list(self._window_manager.get_window_handles(self._current_browser()))

def get_current_window_handle(self):

"""Returns and logs handle of current window known to the browser."""

return self._log_list(self._window_manager.get_current_window_handle(self._current_browser()))

注意添加内容的缩进,否则会导致脚本无法执行  文档最后添加了修改好的文件的附件,注意把原文件备份

按上述添加上,然后可以使用他新添加的关键字了。

网上大神只写了办法,没有说明他的关键字的使用方法。

我研究了下用法,实验成功。具体脚本如下。

解释

@{b} get window handles //@{b}变量保存当前所有的窗口。@符号表示这个变量是集合。

Select window by handle  ${b[1]}//这个是取变量b里面的第二个窗口。(下标从0开始)。

方法2

浏览器窗口之间切换的方法(Select window指令,优先使用方法2)的更多相关文章

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

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

  2. Selenium WebDriver- 通过源码中的关键字找到我们要操作的句柄,用于多个窗口之间切换

    #encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver i ...

  3. selenium+python浏览器窗口的切换

    1.首先需要知道当前浏览器中有多少个活动的窗口 >>> br.window_handles[u'{075a54ee-3d10-4c76-b56d-b645259bbd54}', u' ...

  4. python+selenium多窗口之间切换

    #!/usr/bin/env python # coding:utf8 # author:Z time:2018/9/19 import time from selenium import webdr ...

  5. Pychram 运行程序在 run 窗口和 python console 窗口之间切换

    有图有真相 第一步: 第二步:

  6. robot framework 关键字Switch Browser和Select Window的区别

    Switch Browser针对的是2个Open Browser以上的切换:Select Window针对的是1个Open Browser里面某个点击事件打开了另外一个新窗口 1.例子 Switch ...

  7. 使用MVVM DataTriggers在WPF XAML视图之间切换/Window窗口自适应内容大小并居中

    原文 使用MVVM DataTriggers在WPF XAML视图之间切换 相关文章: http://www.technical-recipes.com/2016/switching-between- ...

  8. 打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口。 语法: window.open([URL], [窗口名称], [参数字符串])

    打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL: ...

  9. java selenium常用API(WebElement、iFrame、select、alert、浏览器窗口、事件、js) 一

     WebElement相关方法 1.点击操作 WebElement button = driver.findElement(By.id("login")); button.clic ...

  10. selenium常用的API(六)浏览器窗口切换

    当使用selenium webdriver进行自动化测试打开多个窗口的时候,可能需要在不同的窗口间进行切换,webdriver提供的获取浏览器窗口句柄.切换句柄的方法如下: 获取当前窗口句柄 driv ...

随机推荐

  1. Spring5 框架基本概念

    课程内容介绍1.Spring 框架概述2.IOC 容器(1)IOC 底层原理(2)IOC 接口(BeanFactory)(3)IOC 操作 Bean 管理(基于 xml)(4)IOC 操作 Bean ...

  2. MySQL Event Scheduler were found damaged

    Navicat操作Mysql时报错信息:Cannot proceed because system tables used by Event Scheduler were found damaged ...

  3. “天翼云息壤杯”高校AI大赛福建赛区启动!

    11月20日,2024首届全国"天翼云息壤杯"高校AI 大赛(福建赛区)正式启动.中国电信福建公司携手华为公司.福建省计算机学会.福建省自动化学会,正式启动天翼云科技有限公司承办的 ...

  4. mysql之我的第一个jdbc程序

    package com.yeyue.lesson01; import java.sql.*; public class jdbcFirstDemo { public static void main( ...

  5. C#/.NET/.NET Core技术前沿周刊 | 第 24 期(2025年1.27-1.31)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  6. kubesphere应用系列(二)部署有状态服务redis

    前言 在 Kubernetes 中,服务(Service)可以被分为有状态服务和无状态服务,个人认为的区别: 无状态服务是指不依赖于任何持久化状态的服务.它们通常是将请求处理为独立.无关的事务,并且在 ...

  7. [WC2018] 通道 题解

    三棵树就很毒瘤了,我们一棵一棵看. 关于第一棵树的路径,经典解法就是点分治和边分治,考虑哪种更加简单. 设 \(dis1/2/3(x)\) 表示 \(x\) 在第 \(1/2/3\) 棵树中的深度(第 ...

  8. 解决 Docker 安装时“无法获取 dpkg 前端锁”错误的有效方法

    在安装 Docker 的过程中,不少用户可能会遇到"无法获取 dpkg 前端锁"的错误提示.这是一个较为常见但也令人困扰的问题.下面为您详细介绍几种可能的解决方法: 方法一:检查并 ...

  9. clickhouse--表引擎

    表引擎 表引擎(即表的类型)决定了: 1)数据的存储方式和位置,写到哪里以及从哪里读取数据 2)支持哪些查询以及如何支持. 3)并发数据访问. 4)索引的使用(如果存在). 5)是否可以执行多线程请求 ...

  10. ‌MySQL 8.0下 200GB大表备份,利用传输表空间解决停服发版表备份问题

    ‌MySQL 8.0下 200GB大表备份,利用传输表空间解决停服发版表备份问题 问题背景 在停服发版更新的时候,需要预先对一个业务表进行备份,该业务表是200GB大小的表,大概200亿行数据. 因为 ...