selenium 对浏览器的操控 java
driver.navigate().back(); 后退
driver.navigate().forward(); 前进
driver.navigate().refresh(); 刷新
driver.manage().window().maximize(); 最大化
// 进入 id 叫frameA 的 iframe
dr.switchTo().frame("frameA");
// 回到主窗口
dr.switchTo().defaultContent();
Iframe操作
- 如果iframe标签有能够唯一确定的id或者name,就可以直接用id或者name的值:driver.switchTo().frame("aa");
- 如果iframe标签没有id或者name,但能够通过页面上确定其是第几个(也就是通过index来定位iframe,index是从0开始的):driver.switchTo().frame(0);
- 还可以通过xpath的方式来定位iframe,写法如下:
- WebElement iframe = driver.findElement(By.xpath("//iframe[@name='aa']"));
- driver.switchTo().frame(iframe);


public void testIFrame(){
driver.findElement(By.id("user")).sendKeys("test");
driver.switchTo().frame("aa");
driver.findElement(By.id("user")).sendKeys("iframe test");
driver.switchTo().defaultContent();//返回顶层frame
driver.findElement(By.id("user")).sendKeys("---new test");
}
最近正在进行webdriver的web级自动化测试代码的编写,遇到一个问题:页面有三个标签,单击一个标签打开一页,要对第二个标签打开的页面进行定位操作,可是总是定位不到。查看一下代码,发现这个标签打开的是一个新页面,在iframe中嵌套着呢,于是在网上搜了一下相关的定位方法。
- main.html
- <</span>html>
- <</span>head>
- <</span>title>FrameTest</</span>title>
- </</span>head>
- <</span>body>
- <</span>div id = "id1">this is a div!</</span>div>
- <</span>iframe id = "frame1" frameborder="0" scrolling="no" style="left:0;position:absolute;" src = "frame.html"></</span>iframe>
- </</span>body>
- </</span>html>
- frame.html
- <</span>html>
- <</span>head>
- <</span>title>this is a frame!</</span>title>
- </</span>head>
- <</span>body>
- <</span>div id = "div1">this is a div,too!</</span>div>
- <</span>label>input:</</span>label>
- <</span>input id = "input1"></</span>input>
- </</span>body>
- </</span>html>
1.iFrame有ID 或者 name的情况
//进入id="frame1"的frame中,定位id="div1"的div和id="input1"的输入框。
dr.switchTo().frame("frame1");
dr.findElement(By.id("div1"));
dr.findElement(By.id("input1"))
2.如果一个iFrame既没有id,也没有name,通用情况
// 定位frame位置,并选取frame
WebElement frame=driver.findElement(By.xpath( "/html/body/div[2]/div[8]/div[2]/div[3]/div/div[2]/div/iframe" ));
driver.switchTo().frame(frame);
3.跳出iFrame
//跳出frame,进入default content;重新定位id="id1"的div
dr.switchTo().defaultContent();
dr.findElement(By.id("id1")
WebDriver中处理原生JS的 alert confirm 以及prompt是很方便的(虽然现在原生JS的实现方式用的很少了)。
具体思路是使用driver.switchTo.alert()方法,定位到当前的 alert/confirm/prompt(这里注意当前页面只能同时含有一个控件,如果多了会报错的,所以这就需要一一处理了),然后在调用Alert 的方法进行操作,Alert提供了以下几个方法:
- getText : 返回alert/confirm/prompt中的文字内容
- accept : 点击确认按钮
- dismiss : 点击取消按钮如果有取消按钮的话
- sendKeys : 向prompt中输入文字
//这个方法在chromedriver中不起作用,IE11的话也有点问题,现在很少用JS,所以就没去研究,以后用到了再研究吧
html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dialogs:alert,confirm,prompt</title>
</head>
<body>
<input id = "alert" value = "alert" type = "button" onclick = "alert('欢迎!请按确认继续!');"/>
<input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定吗?');"/>
<input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的名字:',''); document.write(name) "/>
</body>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
selenium代码
WebDriver driver = new FirefoxDriver();
driver.get("file:///D:/workSpaceIPaaS/selenium.web/src/main/java/webdrivers/dialogs.html");
// 点击弹出alert
driver.findElement(By.id("alert")).click();
Thread.sleep(3000);
//捕获alert
Alert alert= driver.switchTo().alert();
System.out.println("alert text: "+alert.getText());
//点击取消按钮|关闭
alert.dismiss();
Thread.sleep(3000);
//点击弹出confirm
driver.findElement(By.id("confirm")).click();
Thread.sleep(3000);
//捕获confirm
Alert confirm=driver.switchTo().alert();
System.out.println("confirm text: "+alert.getText());
//点击确认按钮
confirm.accept();
Thread.sleep(3000);
//点击弹出prompt
driver.findElement(By.id("prompt")).click();
Thread.sleep(3000);
//捕获prompt
Alert prompt=driver.switchTo().alert();
System.out.println("promp text: "+prompt.getText());
Thread.sleep(3000);
prompt.sendKeys("");
prompt.sendKeys("java");
Thread.sleep(3000);
prompt.accept();
driver.close();
driver.quit();
selenium 对浏览器的操控 java的更多相关文章
- selenium 打开浏览器报错java.lang.NoSuchMethodError: org.openqa.selenium.chrome.ChromeOptions.addArguments([Ljava/lang/String;)
java.lang.NoSuchMethodError: org.openqa.selenium.chrome.ChromeOptions.addArguments([Ljava/lang/Strin ...
- 《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
1.简介 在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下.这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解. 2.浏 ...
- selenium 使用教程详解-java版本
第一章 Selenium 概述 1.1.Selenium 发展史 Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗 ...
- Selenium 设置浏览器下载 Firefox 和Chrome
当我们在使用Selenium运行自动化测试时,偶尔需要用到下载功能,但浏览器的下载可能会弹出下载窗口,或者下载路径不是我们想要保存的位置,所以在通过Selenium启动浏览器时需要做相关的设置,将使这 ...
- 使用Python + Selenium打造浏览器爬虫
Selenium 是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 发起,它提供了一套简单易用的 API,模拟浏览器的各种操 ...
- 杂项-自动化测试工具:Selenium(浏览器自动化测试框架)
ylbtech-杂项-自动化测试工具:Selenium(浏览器自动化测试框架) Selenium 是一个用于Web 应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一 ...
- 使用Selenium通过浏览器对网站进行自动化测试和相关问题
使用Selenium通过浏览器对网站进行自动化测试 自动化测试概念: 一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件. 广义上来讲 ...
- selenium原理应用 - 利用requests模拟selenium驱动浏览器
前言 selenium是一个web自动化测试的开源框架,它支持多语言:python/java/c#… 前面也有一篇文章说明了,selenium+浏览器的环境搭建. selenium支持多语言,是因为s ...
- Selenium Chrome浏览器的启动以及proxy设置
Selenium Chrome浏览器的启动以及proxy设置 虽然WebDriver对Firefox的支持最好,之前写的脚本也都在Firefox浏览器运行,但最近项目做了整合,发现新整合的功能不太 ...
随机推荐
- 使用ZooKeeper实现Java跨JVM的分布式锁(读写锁)
一.使用ZooKeeper实现Java跨JVM的分布式锁 二.使用ZooKeeper实现Java跨JVM的分布式锁(优化构思) 三.使用ZooKeeper实现Java跨JVM的分布式锁(读写锁) 读写 ...
- LeetCode OJ:Happy Number(欢乐数)
Write an algorithm to determine if a number is "happy". A happy number is a number defined ...
- redis 内存库设置 教你怎么解决64位Windows版Redis狂占C盘的问题.
http://blog.csdn.net/renfufei/article/details/41180007 # heapdir指定内存映射文件路径名,不能是文件名 # heapdir <dir ...
- 使用sessionStorage实现页面间传值与传对象
问题描述:业务从A页面跳转到B页面,需要由A页面向B页面传入一个对象.B页面解析对象中的值,然后根据这些值做具体的业务逻辑. 一般的传值方法如下: A页面跳转到B页面时: b.html?xxx=xxx ...
- Tomcat应用服务器被黑客 肉鸡攻击 记录
线上一台应用服务器报警,负载过高,这个就诡异了,因为只是一个普通的服务器,应用使用人员不到10个人,咋会负载高,肯定有问题哪,登陆上去查看, top查看哪个占据的cpu资源比较多 [root@aew0 ...
- SBT构建工具
SBT Simple Build Tool. A interactive build tool. install windows可直接到http://www.scala-sbt.org/0.13/do ...
- [置顶]
【Android实战】----从Retrofit源码分析到Java网络编程以及HTTP权威指南想到的
一.简介 接上一篇[Android实战]----基于Retrofit实现多图片/文件.图文上传中曾说非常想搞明白为什么Retrofit那么屌.最近也看了一些其源码分析的文章以及亲自查看了源码,发现其对 ...
- DelphiXE5 Flappy Bird 复制版
没错 这就是用DelphiXe5 打造的.最流行的 Flappy bird!呵呵. 转 Delphi XE5 Firemonkey Flappy Bird Clone from fmxexpress
- [转]优化Flash性能
原文:http://www.adobe.com/devnet/flash/articles/optimizing-flash-performance.html 翻译:http://bbs.9ria.c ...
- Linux下Apache配置局域网访问出现的问题
在网站安装好之后,本机可以访问,但是局域网内无法访问,我查看了 /etc/httpd/conf/httpd.conf 看到我的配置如下 <Directory ......> Allow A ...