selenium测试(Java)--多窗口切换(十三)
如果遇到点击按钮或链接后出现新窗口的情况,就需要使用窗口切换的方法。
切换窗口方法

本例中就是先打开百度搜索界面,然后利用js打开一个百度新闻界面,然后通过selenium提供的窗口切换方法切换窗口

1 package com.test.windows;
2
3 import java.util.Iterator;
4 import java.util.Set;
5
6 import org.openqa.selenium.By;
7 import org.openqa.selenium.JavascriptExecutor;
8 import org.openqa.selenium.WebDriver;
9 import org.openqa.selenium.firefox.FirefoxDriver;
10
11 public class WindowsSwitch {
12
13 public static void main(String[] args) {
14
15 WebDriver driver = new FirefoxDriver();
16 driver.get("http://www.baidu.com");
17 driver.manage().window().maximize();
18
19 String searchHandle = driver.getWindowHandle();
20 System.out.println("baidu search handle : " + searchHandle);
21
22 // 获取百度新闻的连接,然后利用js打开一个新的窗口
23 waitTime(3000);
24 String href = driver.findElement(By.cssSelector("[name=tj_trnews]")).getAttribute("href");
25 System.out.println("the link of news is : " + href);
26 JavascriptExecutor executor = (JavascriptExecutor) driver;
27 executor.executeScript("window.open('" + href + "')");
28
29 waitTime(3000);
30 Set<String> handles = driver.getWindowHandles();
31 Iterator iterator = handles.iterator();
32 Iterator iterator2 = handles.iterator();
33
34 // 进入百度新闻窗口,并获取title验证
35 waitTime(3000);
36 while (iterator.hasNext()) {
37 String h = (String) iterator.next();
38 if (h != searchHandle) {
39 driver.switchTo().window(h);
40 if (driver.getTitle().contains("百度新闻")) {
41 System.out.println("switch to news page successfully");
42 break;
43 } else {
44 continue;
45 }
46 }
47
48 }
49
50 // 返回百度首页
51 waitTime(3000);
52 /*
53 * 可以直接使用searchHandle来切换,也可以利用遍历来切换
54 * driver.switchTo().window(searchHandle);
55 * if(driver.getTitle().contains("百度一下")){
56 * System.out.println("switch to search page successfully");
57 * driver.findElement(By.cssSelector("#kw")).sendKeys(
58 * "switch successfully"); }
59 */
60 while (iterator2.hasNext()) {
61 String h = (String) iterator2.next();
62 if (searchHandle.equals(h)) {
63 driver.switchTo().window(h);
64 if (driver.getTitle().contains("百度一下")) {
65 System.out.println("switch to search page successfully");
66 driver.findElement(By.cssSelector("#kw")).sendKeys("switch successfully");
67 break;
68 } else {
69 continue;
70 }
71 }
72
73 }
74
75 waitTime(3000);
76 driver.quit();
77
78 }
79
80 static public void waitTime(int time) {
81
82 try {
83 Thread.sleep(time);
84 } catch (InterruptedException e) {
85 // TODO Auto-generated catch block
86 e.printStackTrace();
87 }
88 }
89
90 }
selenium测试(Java)--多窗口切换(十三)的更多相关文章
- selenium中的多窗口切换
在selenium中,我们会遇到一些问题,就是多窗口处理的问题,我们爬取的内容在一个新窗口上,这个时候,我们就需要先切换到这个新的窗口上,然后进行抓取内容. 如何切换呢? 首先,获取当前窗口句柄 1. ...
- selenium - switch_to.window() - 多窗口切换
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 以百度首 ...
- python+selenium五:多窗口切换与获取句柄
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time driver = webdri ...
- selenium之实现多窗口切换到自己想要的窗口
#coding=utf-8 from selenium import webdriver import time from selenium.webdriver.support import expe ...
- 《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Se ...
- Selenium常用API的使用java语言之14-多窗口切换
在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换. 以百度 ...
- Selenium+Java(十一)Selenium窗口切换
前言: Selenium在当前页面调整到新页面时打开了新的窗口,此时就需要跳转到新的窗口去,需要把窗口进行切换. 获取窗口句柄方法: 获取所有: //获取所有窗口句柄,返回的是set类型 driver ...
- [selenium webdriver Java]处理弹出窗口
Selenium WebDriver测试弹出窗口,包括识别弹出窗口,将driver转到新的窗口,在新的串钩中执行而是步骤,然后再转换到最初的窗口. 通过名称(name)识别和处理: Selenium ...
- Python+Selenium学习--窗口切换及操作元素
场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...
随机推荐
- [archlinux][hardware] ThankPad T450自带SSD做bcache之后的使用寿命分析
这个分析的起因,是由于我之前干了这两个事: [troubleshoot][archlinux][bcache] 修改linux文件系统 / 分区方案 / 做混合硬盘 / 系统转生大!手!术!(调整底层 ...
- LoadRunner函数示例:lr_paramarr_random()
lr_paramarr_random()函数的作用为:从一个参数数组中随机抽取一个值并以字符串形式返回.其使用方式及返回方式如下: char * lr_paramarr_random( const c ...
- Yii2 关闭和打开csrf 验证 防止表单多次重复提交
原文地址:http://blog.csdn.net/terry_water/article/details/52221007 1.在Yii2配置中配置所有:所有的controller都将关闭csrf验 ...
- PostgreSQL windows service启动失败
from: http://stackoverflow.com/questions/1251233/unable-to-run-postgresql-as-windows-servicepg_ctl - ...
- WordPress基础:自定义菜单
需要自定义一个菜单,可以访问后台->外观->菜单
- h5移动版云胶片系统
h5移动版云胶片系统. 最近开了一个医疗用的云胶片,可以对图片放大.图片缩小,图片移动,图片调窗,图片切换,图片播放,图片变灰等等功能.如下图:
- 《Linux及安全》期中总结&《Linux内核分析》期终总结
[5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE ...
- 用Pyinstaller打包发布exe应用
有时候编写的Python程序依赖很多,如果要在不同服务器上安装python环境等东西有点得不偿失了.这时候可以使用pyinstaller和py2exe,能够将python程序打包成可执行的exe文件, ...
- linux 技巧:使用 screen 管理你的远程会话
你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远程终 ...
- orange pi pc 体验(一)
最近在淘宝上看到一款和树莓派差不多的卡片机,定价才99元,而且是国产的,忍不住入手了一个,就是orange pi 感兴趣的可以百度搜索下,深圳一个公司出的,不过资料比树莓派少了很多,论坛中人也没多少, ...