如果遇到点击按钮或链接后出现新窗口的情况,就需要使用窗口切换的方法。

切换窗口方法

本例中就是先打开百度搜索界面,然后利用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)--多窗口切换(十三)的更多相关文章

  1. selenium中的多窗口切换

    在selenium中,我们会遇到一些问题,就是多窗口处理的问题,我们爬取的内容在一个新窗口上,这个时候,我们就需要先切换到这个新的窗口上,然后进行抓取内容. 如何切换呢? 首先,获取当前窗口句柄 1. ...

  2. selenium - switch_to.window() - 多窗口切换

    在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 以百度首 ...

  3. python+selenium五:多窗口切换与获取句柄

    from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time driver = webdri ...

  4. selenium之实现多窗口切换到自己想要的窗口

    #coding=utf-8 from selenium import webdriver import time from selenium.webdriver.support import expe ...

  5. 《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)

    1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Se ...

  6. Selenium常用API的使用java语言之14-多窗口切换

    在页面操作过程中有时候点击某个链接会弹出新的窗口, 这时就需要主机切换到新打开的窗口上进行操作.WebDriver提供了switchTo().window()方法可以实现在不同的窗口之间切换. 以百度 ...

  7. Selenium+Java(十一)Selenium窗口切换

    前言: Selenium在当前页面调整到新页面时打开了新的窗口,此时就需要跳转到新的窗口去,需要把窗口进行切换. 获取窗口句柄方法: 获取所有: //获取所有窗口句柄,返回的是set类型 driver ...

  8. [selenium webdriver Java]处理弹出窗口

    Selenium WebDriver测试弹出窗口,包括识别弹出窗口,将driver转到新的窗口,在新的串钩中执行而是步骤,然后再转换到最初的窗口. 通过名称(name)识别和处理: Selenium ...

  9. Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

随机推荐

  1. 【PC网站前端架构探讨系列】关于中小型PC网站前端架构方案的讨论与实践

    目   录 1.遇到的问题 2.目标 3.探讨 4.架构设想 5.流程 6.初步实现 7.存在问题 8.最后 遇到的问题 我在这个系列上篇文章 已经讲解并开始逐步应用模块化思想,不知大家还记不记得,题 ...

  2. 前端开发与SEO

    前端开发中通过一些小习惯,可以有利于SEO,本着蚊子再小也是肉的原则,能抓住自然不能忽略. 1.控制首页链接数量,不能过多,也不要太少.更不要为了凑数而添加 2.扁平化层次,力争跳转三次可以到任何页面 ...

  3. tjkd-html

    <div class="result-item"> <div class="kd-item"> <div class=" ...

  4. MULTITHREADING AND CHIP MULTIPROCESSORS

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION The most important me ...

  5. yii事件

    控制器: public function actionTests1(){ $c = new \app\components\cat(); $m = new \app\components\mou; $ ...

  6. HTML表单

    表单的主要作用在于在网页上提供一个图形用户界面,以采集和提交用户输入的数据.使用输入控件:1.文本框<input type="text">:2.口令输入框input t ...

  7. openfire 用户密码加密解密

    1.openfire采用的加密方法 Blowfish.java /** * $RCSfile$ * $Revision: 3657 $ * $Date: 2002-09-09 08:31:31 -07 ...

  8. css3知识

    一.box-sizing 属性 规定两个并排的带边框的框 二.align-items (适用于父类容器上) 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式. 值: flex-start:弹性盒子 ...

  9. java.util.concurrent.atomic 包详解

    Atomic包的作用: 方便程序员在多线程环境下,无锁的进行原子操作 Atomic包核心: Atomic包里的类基本都是使用Unsafe实现的包装类,核心操作是CAS原子操作 关于CAS compar ...

  10. shell面试题目总结

    1.如何理解shell脚本中第一行#!/bin/sh #!为特殊的表示符,其后是解释此脚本的shell的路径.此脚本使用/bin/sh进行解释执行. 2.如何向脚本传递参数. 脚本名字 参数1 参数2 ...