Selenium中怎么实现多个窗口之间的切换?

Selenium 多窗口(多Tab)之前的切换

多窗口的切换的目的是为了让selenium改变操作的窗口。在selenium中假如不切换窗口,一旦遇到一个链接跳转到另外的窗口的时候,当前的资源句柄操作的依然是最开始的窗口,这样一来,就给自动化人员带来极大的不便。在多窗口的切换中,资源句柄会随着切换窗口而切换操作的资源句柄。
在切换窗口的时候需要做的步骤与思路:获取当前浏览器的所有资源句柄放到Set集合中,通过遍历的方式获取该资源句柄的Title与实际想切换的窗口的Title进行比较,如果相等,那么在当前窗口停下。否则不断遍历。

import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class alterWind {

public static void main(String[] args) {
        // TODO Auto-generated method stub
    String chromePath=System.getProperty("user.dir")
            +"\\driver\\chromedriver.exe";
    System.setProperty("webdriver.chrome.driver", chromePath);
    WebDriver driver=new ChromeDriver();
        /*
         * 生成三个京东的窗口
         */
driver.get("https://www.jd.com");
    driver.findElement(By.linkText("秒杀")).click();
    driver.findElement(By.linkText("优惠券")).click();
    Set<String> handles=driver.getWindowHandles();
        /*
         * 遍历handles,Set集合
         */
for(String wind:handles){
        /*
                 * 根据集合中的资源句柄不断遍历各个窗口并获取各个窗口的Title是否包含"京东秒杀-正品保证、天天低价、限时限量")
                 * 包含的话就break退出循环,否则直至遍历完集合
                 */
if(driver.switchTo().window(wind).getTitle().contains("京东秒杀-正品保证、天天低价、限时限量")){
            break;
        }
    }
}
}

原文地址:http://blog.51cto.com/13740529/2120380

时间: 2024-10-18 11:12:39

Selenium中怎么实现多个窗口之间的切换?的相关文章

vs中.h文件与.cpp文件之间的切换

我最近写了很多C++程序,头文件与源文件之间的切换实在是件痛苦的事.在vc6.0中有一个宏可以实现这个切换,但是我发现这个宏在vs2008中不好用.像其他出色的程序员一样,我决定自己写一个宏来实现这个功能. 如果你之前没有写过这个宏,那么请参考以下步骤: 1.在vs中选择Tools | Macros | Macros IDE,打开宏窗口: 2.右键点击左侧目录的MyMacros,选择Add | Add Module新建一个文件,将其重命名为CppUtilities,此时这个文件会在编辑器中打开:

导航中一级导航和二级导航之间的切换

<h3>学籍系统</h3> <ul> <li><a href="/Student/LeaveList.aspx">请假信息</a></li> </ul> <h3>实验管理系统</h3> <ul> <li><a href="/Student/Laboratory/LeaveList.aspx">借出设备</a

[selenium webdriver Java]处理弹出窗口

Selenium WebDriver测试弹出窗口,包括识别弹出窗口,将driver转到新的窗口,在新的串钩中执行而是步骤,然后再转换到最初的窗口. 通过名称(name)识别和处理: Selenium WebDriver允许我们通过name属性或窗口的句柄来识别窗口,然后通过WebDriver.switchTo().window()方法在不同的窗口之间进行切换. window name属性的定义 name 属性可设置或得到窗口的名称,其值为字符串.语法如下: 1 window.name = [na

Java Selenium (十二) 操作弹出窗口 &amp; 智能等待页面加载完成 &amp; 处理 Iframe 中的元素

一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口. 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</title> <script type

C#中父窗口和子窗口之间控件互操作实例

本文实例讲述了C#中父窗口和子窗口之间控件互操作的方法.分享给大家供大家参考.具体分析如下: 很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异: 第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如: 代码如下: public static yourMainWindow pCurrentWin = null

VC中利用多线程技术实现线程之间的通信

文章来源:[url]http://www.programfan.com/article/showarticle.asp?id=2951[/url] 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.

java selenium (十二) 操作弹出窗口

selenium 中如何处理弹出窗口 阅读目录 原理 在代码里, 通过         Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄,   然后遍历,  使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</ti

selenium 窗口句柄之间的切换

以前使用selenium时都是在单窗口的模式下,本次新增多窗口下的窗口之间切换 from selenium import webdriver from selenium.webdriver.common.keys import Keys import selenium.webdriver.support.ui as ui from selenium.webdriver.common.action_chains import ActionChains #完成点击下载ppt def get_ppt_

委托应用①——窗口之间方法/控件调用

转载请注明地址:http://www.cnblogs.com/havedream/p/4602974.html 最近重新拿起以前的书看,发现关于委托和事件一直没有很好的理解,或者说理解了也不知道到底这个东西有什么用,今天恰好碰到了一个窗口之间方法调用的问题(至于控件的调用其实是一样的,方式一样),问题描述如下: Form1中有一个刷新方法Refreash(),Form1用dialog方式打开Form2,我需要在更改完Form2后,也就是关闭Form2的时候刷新Form1,也就是调用Form1的R