java+selenium——打开多个窗口,并切换窗口——方法一

先来解释下什么是句柄,有时候浏览器的窗口句柄,也叫windows id,英文单词更好理解。

你打开了一个浏览器,你开一个tab,就生成了一个id,这个id直到你关闭这个tab才会消失。

如果你在一个浏览器上打开多个tab,那么就有多个windows id,为什么你关闭其中一个tab,但是不影响其他tab的显示,就是这个id的作用。

本文就是要介绍如何获得浏览器窗体的句柄或者叫编号,为后面的driver实例在多个窗体之间切换做准备。

我们先看看浏览器只开一个tab,也就是只有一个windows句柄的时候,打印出这个句柄出来。
==========================================================================================================

打印结果像这样:CDwindow-e3655cc7-5cc1-42cc-a3d0-0d6339d1cfab

这个id是每次启动都变化的,所以,你打印和我打印出来的肯定不同。

接下来,看看有两个tab,打印出两个windows句柄来,使用getWindowsHandles()方法。

==============================================================================================================================

package rjcs;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Set;

import org.openqa.selenium.interactions.Actions;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;
import org.openqa.selenium.*;

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.openqa.selenium.OutputType;

import com.thoughtworks.selenium.SeleneseTestNgHelper;

public class ckqh
{

    public static void main(String[] args)

    {
         System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");    //设置火狐的安装路径,防止系统找不到

         FirefoxDriver driver = new FirefoxDriver();        //初始化FireFox浏览器实例,并打开浏览器

        try
        {
             driver.manage().window().maximize();         //最大化窗口

             Thread.sleep(3000);        

             driver.manage().window().maximize();         //最大化窗口

             Thread.sleep(3000);

             driver.get("https://www.baidu.com");                    //打开一个网址,方法一             

             Thread.sleep(3000);                  

              driver.findElementByPartialLinkText("设为主页").click();

             Thread.sleep(3000);  

             System.out.println(driver.getWindowHandle());    //打印当前浏览器的当前标签页的句柄

             String a = driver.getWindowHandle();

             Thread.sleep(3000); 

             System.out.println(driver.getWindowHandles());    //打印当前浏览器的所有标签页的句柄
                                                               //打印出来是一个list
             Thread.sleep(3000); 

             Set<String> currenWindow = driver.getWindowHandles ();         //获取所有句柄
             System.out.println (currenWindow.size ());              //打印句柄(即窗口)的个数

             Thread.sleep(3000);            

             driver.switchTo().window(a);    //切换句柄

             Thread.sleep(3000); 

        }catch (Exception e)
        {
            e.printStackTrace();
        }finally
        {
            driver.quit();

         }
   }

}

执行结果:

{5f9d93e2-496b-4402-a938-7968c83920db}
[{5f9d93e2-496b-4402-a938-7968c83920db}, {8beddbeb-0ce9-414c-8b83-2f8188da6bde}]
2

原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12216060.html

时间: 2024-11-03 22:11:16

java+selenium——打开多个窗口,并切换窗口——方法一的相关文章

java+selenium——打开多个窗口,并切换窗口——方法二

package rjcs; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; import java.util.Set; import org.openqa.selenium.interactions.Actions; import org.apache.commons.io.FileUtils; import org.openqa.selenium.TakesScreensh

java+selenium——打开多个窗口,并切换窗口——方法三

package rjcs; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Set; import org.openqa.selenium.interactions.Actions; import org.apache.commons.io.FileUtils; import org.o

java+selenium——打开网页并输入点击

package rjcs; import org.openqa.selenium.firefox.FirefoxDriver; public class chuangkou { public static void main(String[] args) { System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //设置

WebDriver(Selenium2) 根据新窗口title切换窗口

http://uniquepig.iteye.com/blog/1559321 在webdriver官方的api中,切换窗口的方法提供的参数是nameOrHandle. 引用 http://uniquepig.iteye.com/blog/1559321 WebDriver window(java.lang.String nameOrHandle)           Switch the focus of future commands for this driver to the windo

使用selenium+python;在页面A点击一个按钮跳转到页面B,页面A没有关闭,浏览器打开了一个B,切换窗口定位页面B的元素

转自:http://blog.csdn.net/hhabc123456789/article/details/21862139 # -*- coding:cp936 -*-__author__ = 'Administrator' import unittest,time,refrom selenium import webdriver class Untitled(unittest.TestCase):    def setUp(self):        self.driver = webdr

java+selenium环境搭建

这篇文章只是为了记录一下搭建环境,方便自己日后查看. 一.在eclipse中搭建maven 1.安装maven 将apache-maven-3.5.0解压到C盘根目录下 配置maven环境变   MAVEN_HOME : C:\apache-maven-3.3.9  MAVEN : %MAVEN_HOME%\bin  MAVEN_OPTS : -Xms256m -Xmx512m  在path最前面加上: %MAVEN%; 验证maven是否安装成功 Cmd->mvn -version 成功则出现

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

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

selenium 切换窗口的几种方法

第一种方法: 使用场景: 打开多个窗口,需要定位到新打开的窗口 使用方法: # 获取打开的多个窗口句柄 windows = driver.window_handles # 切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) 举例说明: 1 # _._ coding:utf-8 _._ 2 3 """ 4 :author: 花花测试 5 :time: 2017.05.03 6 :content: 使用第一种方法切换浏览器 7 &q

Selenium切换窗口,使用js命令

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作. WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 以百度首页和百度注册页为例,在两个窗口之间的切换如下图. from selenium import webdriver import time driver = webdriver.Firefox() driver.implicitly_wait(10) driver.get("http://www.ba