元素有时在另一个页面里查找元素却报错找不到元素,可能是因为要查找的元素不在原来所在的页面。

一.iframe切换

有些定位元素定位不到,是因为元素在新的iframe页面里,但是driver还停留在原来的iframe里

1.切换到新的页面

webDriver.switchTo().frame(elementframe);

2. 回到上一级页面

页面返回上一级页面时,定位的元素在上一级的frame里,需要先将frame返回到上一级,才能找到元素

webDriver.switchTo().parentFrame();

3.回到默认页面

页面有时没有返回上一级而是直接返回首页(主页面),在首页面进行元素操作,frame需要返回到首页,元素才能被找到

webDriver.switchTo().defaultContent();

二.Alert切换

页面需要切换到alert才能定位alert上的元素

1.得到alert

Alert alert=webDriver.switchTo().alert();

2.获取alert的提示信息

alert.getText()

3.Alert确认按钮

alert.accept();

4.Alert取消按钮

alert.dismiss();

三.Window切换

当点击一个超链接元素时,可能在当前窗口加载新页面,也可能加载一个新窗口加载页面。如果打开一个新的窗口,但是driver还停留在原来的窗口,需要通过切换driver的焦点才能定位到新窗口的元素。

1.根据传入新的句柄切换到新的窗口

webDriver.switchTo().window(handle)

2.找到新窗口的句柄

(1)句柄

窗口的标识,唯一,是一串字符串

(2)获取窗口句柄

driver.getWindowHandle();  //获取当前操作窗口的句柄
driver.getWindowHandles(); //获取测试时打开的所有窗口句柄

(3)获取新窗口的句柄

webDriver.get("https://www.baidu.com");
webDriver.findElement(By.partialLinkText("地图")).click();
//获取打开所有窗口的句柄,获取到的结果无序,用增强for循环
Set<String> handleafter=webDriver.getWindowHandles();
for (String handle:handleafter){
//已知新窗口的标题,如果当前窗口的标题和新窗口标题相等,退出
if (webDriver.getTitle().equals("百度地图")){
break;
//否则,切换窗口再继续循环
}else {
webDriver.switchTo().window(handle);
}
}
//根据当前窗口的title验证是否切换到新窗口
System.out.println(webDriver.getTitle());

web自动化的三大切换的更多相关文章

  1. web自动化之三大等待

    这个假期有些长,长到忘记了要学习,要找工作,好吧,在我每天无休止的追着偶像剧时,我确实没有负罪感,在听了小祥大佬的分享后,我连睡午觉都被吓醒.大佬跟我同一个班,在大厂工作,每天还抽时间学习,作业也没落 ...

  2. web自动化的三大等待

    由于web网页打开后需要时间进行数据的传送,页面的渲染,所以我们在写web自动化脚本的时候,需要等待它加载完所有的页面元素,我们才进行操作或点击.同时这种等待也是为了提高脚本的稳定性. seleniu ...

  3. web自动化 -- 浏览器窗口切换

    切换浏览器窗口 示例: from time import sleep from selenium import webdriver from selenium.webdriver.support.wa ...

  4. Web自动化之iframe切换

    一.如何判断元素是否在iframe中 选中要操作的元素,通过下方的父节点查看是否存在iframe,存在则元素在iframe,需要切换至iframe中进行元素的操作 二.iframe切换方式一 1.方式 ...

  5. 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...

  6. python selenium + web自动化,切换到新的窗口,元素定位不到?

    问题描述: 自动化由首页切换到分页面,打开了一个新的窗口,不过,定位不到这个窗口的元素,通过开发者工具是可以查到这个元素的 原因是: 因为窗口句柄还停留在上一个页面,所以导致无法定位元素.报错 &qu ...

  7. 爬虫实战:爬虫之 web 自动化终极杀手 ( 上)

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:陈象 导语: 最近写了好几个简单的爬虫,踩了好几个深坑,在这里总结一下,给大家在编写爬虫时候能给点思路.本次爬虫内容有:静态页面的爬 ...

  8. web自动化工具-开篇

    web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...

  9. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...

  10. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

随机推荐

  1. ctfshow--web4 include日志注入

    这题和第三题有点不一样,这题的把php 和 data 都过滤掉了 一旦我们输入这个关键字就页面就会报error 一开始是没啥头绪的,后面上网查了一下,可以通过日志记录来注入代码 对于Apache,日志 ...

  2. 《SpringBoot》EasyExcel实现百万数据的导入导出

    24年11月6日消息,阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布,将停止更新,未来将逐步进入维护模式,将继续修复Bug,但不再主动新增功能. EasyExcel 是一款知名的 ...

  3. Spring AI 提交 PR 实战指南:避免常见坑

    今天,我们将简单地了解如何向 Spring AI 提交 PR(Pull Request).在这个过程中,有一些常见的坑需要大家注意和避免,特别是在 Git 操作方面.我们会重点关注提交信息的规范,如何 ...

  4. Kali 切换中文模式

    Kali 切换中文模式 在桌面打开终端,输入sudo dpkg-reconfigure locales命令,然后输入kali的密码 在选择栏目找到 zh_CN.UTF-8 UTF-8 找到之后按 空格 ...

  5. 多个tomcat启停脚本server.sh

    vi server.sh #!/bin/bash export JAVA_HOME=/u01/java_home/jdk1.8.0_181 export JRE_HOME=${JAVA_HOME}/j ...

  6. oracle 常用函数2

    1.ASCII 2 2.CHR. 2 3.CONCAT. 2 4.INITCAP. 2 5.INSTR(C1,C2,I,J) 3 6.LENGTH *. 3 7.LOWER. 3 8.UPPER. 3 ...

  7. FLink17--聚合函数-AggWindowApp

    一.依赖 二.代码 package net.xdclass.class11; import org.apache.flink.api.common.RuntimeExecutionMode; impo ...

  8. 旅行商问题(TSP)概述

    旅行商问题(TSP)概述 1. TSP问题的复杂性 定义:旅行商问题(Traveling Salesman Problem, TSP)是给定一系列城市及其之间的距离,要求找到一条最短路径,使得旅行商从 ...

  9. 用 DeepSeek 给对象做个网站,她一定感动坏了

    大家好,我是程序员鱼皮.又是一年特殊的日子,作为一名程序员,总是幻想着自己有对象, 总是想着用自己贼拉牛 X 的编程技术给对象做个网站. 本文对应视频,观看体验更好哦:https://bilibili ...

  10. [TJOI/HEOI2016] 求和 题解

    为什么又是佳媛姐姐啊啊啊! 斯特林数在这道题中不好处理,直接拆开: \[f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix}2^j ...