面试常见的selenium问题
1.如何切换iframe
问题:如果你在一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个iframe元素或default content中的元素,那必然也定位不到
基本步骤:先通过switch进入到iframe中,找到想找的元素,然后跳出来,进行其他的操作
1).定位到iframe:WebElement IframeElement=driver.findElement(By.id(“frame”));
2).切到这个iframe 里面:Driver.switch().frame(IframeElement);
3).定位Iframe里面,你想要的元素:
WebElement content=driver.findElement(By.className("CSS1Compat"));
//在iframe中定位要找的元素
content.sendKeys("cke_contents_content");
//操作元素
driver.switchTo().defaultContent();
//跳出iframe,不跳出来是不能进行iframe外的操作的
2.如何处理弹窗
1)处理弹窗就是一行代码:driver.switchTo().alert().accept(),这个弹窗就关闭了;
2)alert()方法知识:http://www.w3school.com.cn/jsref/met_win_alert.asp
3.如何处理上传文件
注:selenium不能处理windows窗口,它能提供的方法就是,把图片或者文件的地址用sendkeys传给【上传文件/图片】控件,对于含有input element的上传, 我们可以直接通过sendkeys来传入文件路径
1)找到上传控件element,并输入路径:
WebElement element = driver.findElement(By.id("cloudFax-attachment-form-upload-input"));
element.sendKeys(getFilePath(text.txt));
2)路径的处理:
private String getFilePath(String resource) {
URL path = this.getClass().getResource(resource);
return path.toString().replaceAll("file:/","");
}
附:看到另外一种简单粗暴的处理方法,只需要3条代码来处理此问题
WebElement uploadButton = driver.findElement(By.name("image"));
String file="C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg";
uploadButton.sendKeys(file);
相关链接:https://github.com/zhaohuif/-/wiki/Selenium-webdriver%E5%AD%A6%E4%B9%A0%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98
http://www.51testing.com/html/55/n-860455.html
http://ask.testfan.cn/article/26
4.如何切换浏览器窗口
原理:webdriver是根据句柄来识别窗口的,因为句柄可以看做是窗口的唯一标识id。获取新窗口的思路是:先获取当前窗口句柄,然后获取所有窗口的句柄,通过排除当前句柄,来确定新窗口的句柄。获取到新窗口句柄后,通过switchto.window(newwindow_handle)方法,将新窗口的句柄当参数传入就可以捕获到新窗口了。
//得到当前窗口的句柄
String currentWindow = dr.getWindowHandle();
//得到所有窗口的句柄
Set<String> handles = dr.getWindowHandles();
//排除当前窗口的句柄,则剩下是新窗口(/*把Set集合转换成Iterator*/)
Iterator<String> it = handles.iterator();//迭代器
while(it.hasNext()){
String handle = it.next();
if(currentWindow.equals(handle)) continue;
driver.close();
WebDriver window = dr.switchTo().window(handle);
System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl());
相关链接:http://jarvi.iteye.com/blog/1450626
http://m.blog.csdn.net/article/details?id=8102135
面试常见的selenium问题的更多相关文章
- LeetCode面试常见100题( TOP 100 Liked Questions)
LeetCode面试常见100题( TOP 100 Liked Questions) 置顶 2018年07月16日 11:25:22 lanyu_01 阅读数 9704更多 分类专栏: 面试编程题真题 ...
- java异常面试常见题目
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它 ...
- Java面试常见知识点总结(三)
21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...
- python基础面试常见题
1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一 ...
- C++面试常见考点
这两周参加了3家公司的面试,一家是做嵌入式的外企,一家是做智能家居的初创公司,一家是做网络分析的公司. 通过参加面试,越发的觉得语言只是基础,虽然都是计算机领域,但是不同的业务肯能用到的技术不同,所以 ...
- 大数据测试之ETL测试工具和面试常见的问题及答案
转载自: http://www.51testing.com/html/87/n-3722487.html 概述 商业信息和数据对于任何一个企业而言都是至关重要的.现在很多公司都投入了大量的人力.资金和 ...
- 前端面试---常见的web安全及防护原理
一.常见的web安全及防护原理 1.sql注入原理 就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 防护,总的来说有以下几点: 1. ...
- java面试常见题目
JAVA相关基础知识面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 ...
- HTTP面试常见题
1.HTTP2.0.1.1.1.0.0.9的区别? 答:HTTP0.9:是HTTP协议的第一个版本,只允许发送get请求,并且不支持请求头.一次请求对应一次响应.是短连接. HTTP1.0:相比于0. ...
随机推荐
- 基于AXI VDMA的图像采集系统
基于AXI VDMA的图像采集系统 转载 2017年04月18日 17:26:43 标签: framebuffer / AXIS / AXI VDMA 2494 本课程将对Xilinx提供的一款IP核 ...
- [svc]tomcat在win+eclipse上部署/及虚拟主机配置/http302
tomcat也可以称为catalina catalina_home就是tomcat安装路径:D:\Program Files\apache-tomcat-8.0.36\bin windows下安装to ...
- 河南省第七届ACM程序设计大赛赛后总结
我们学校ACM集训开始于4月5号(清明节),5月25日在郑州解放军信息工程大学举办,集训耗时50天,但是感觉效果还行,但是也不是太好:我们也已经尽力了,虽然说只拿了个银牌,每份收获的背后,都会有辛勤的 ...
- Highcharts 图表js框架
纯js图表框架 ,图表传入Json数据 设置等等 , 如没特定要求可以考虑使用 优点 : 减轻服务器脚本运行负重 ,纯js执行,特效 缺点: 已知兼容性不高 帮助地址: http://w ...
- eclipse中根据方法找到其实现类
面向接口编程中,程序全是面向接口变成调用,在维护别人写的系统的时候怎么样快速定位当前根据接口调用的方法是哪个实体类实现的: Ctrl + T/f4(光标放在需要查看的方法上,然后按Ctrl+T或者F4 ...
- python_集合_笔记
集合 特性: a.确定性(元素必须可以hash) b.互异性(去重) c.无序性(集合中的元素没有先后之分) 集合关系测试 交集 & jihe1.intersection(jihe2) 差集 ...
- liunx下安装mysql(未完待更新)
1.下载mysql-liunx 下载地址:http://download.csdn.net/download/yichen01010/10019139 2.删除系统自带mysql rpm -qa|gr ...
- 本地连接linux虚拟机的方法
1.给虚拟机添加一个ehtX: 2. 3.添加一个ethX 4. 5.设置使用的是哪一个网卡,ifconfig的时候变会得到相应的ip 6. 再在cmd那ping ifconfig出来的自动获取的ip ...
- 技巧C#
1. 在CallBack之后保持滚动条的位置: 在Asp.Net1.1中,CallBack之后保持滚动条的位置是一件非常痛苦的事情,特别是页中有一个Grid并且想要编辑特定的行.为了不停留在想 ...
- JMeter基础之-使用技巧
在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享.本文内容如下. 如何使用英文界面的jmeter 如何使用镜像服务器 Jmeter分布式测试 启动Deb ...