selenium2常用API介绍
我们模拟web操作都是基于元素来操作的,我们首先要先确定元素,然后这个元素下对应的方法就可以看WebElement的方法。
1.点击操作
WebElement button=driver.findElement(By.id("login"));
button.click();
2.清除操作
WebElement username=driver.findElement(By.id("username_input"));
username.clear();
3.获取元素属性的值
<input type="text" value="" autocomplete="off" placeholder="用户名" id="u" class="form-control" onblur="checkFailNum()" name="username">
上面代码是用户名输入框的源码,我们要获取这个“用户名”三个字就需要用到:
WebElement WebElement username=driver.findElement(By.id("u"));
u.getAttribute(“placeholder”);
这样就能获取到“用户名”这三个字了。
4.获取元素的文本
<button class="btn btn-major" id="loginBtn" type="button">登录</button>
WebElement中提供一个getText()方法可以获取,代码如下:
WebElement login= driver.findElement(By.id(“loginBtn”));
login.getText();
5.判断元素是否显示
方法有个返回值类型是boolean,也就是说如果元素显示了返回true,如果没有显示返回false。
WebElement login= driver.findElement(By.id(“loginBtn”));
login.isDisplayed();
6.元素是否被选择
有这样的情况,复选框或者是单选框,我们需要判断这个框是不是被勾选了。
如果勾选了,返回true,如果没有勾选返回false。
WebElement checkbox= driver.findElement(By.id(“checkbox_id”));
checkbox.isSeelected();
7.元素是否被启用
有些按钮,可能在页面显示上被灰掉,就是不让点击,这个时候这个按钮是不可用的。
那么我们如何判断这个按钮是否能被点击呢?请用isEnabled()方法,如果可用返回true,如果不可用返回false。
WebElement login= driver.findElement(By.id(“loginBtn”));
login. isEnabled ();
8.提交操作
在有表单的界面上,可以不通过点击按钮进行提交操作,这就需要用到submit()方法
比如一个元素的源码:
<button class="btn btn-major" id="loginBtn" type="submit">登录</button>
此源码需要在一个表单(Form)中,并且type需要时submit类型,此时我们的代码可以这样写:
WebElement login= driver.findElement(By.id(“loginBtn”));
login. submit();
9.iframe
有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。
页面源代码为:
<td>Iframe</td>
<td class="widgetStyle">
<iframe width=800 height=330 name=aa frameborder=0 src="./demo1.html"></iframe>
</td>
则 driver.switchTo().frame(“aa”); //传入的是iframe的Name 1.如果iframe标签有能够唯一确定的id或者name,就可以直接用id或者name的值:driver.switchTo().frame("aa");
2.如果iframe标签没有id或者name,但是我能够通过页面上确定其是第几个(也就是通过index来定位iframe,index是从0开始的):driver.switchTo().frame(0);
3.也可以通过xpath的方式来定位iframe,写法如下:
①WebElement iframe = driver.findElement(By.xpath("//iframe[@name='aa']"));
②driver.switchTo().frame(iframe);
如果要返回到以前的默认content,可以使用:
dr.switchTo().defaultContent();
10.操作下拉选择框
思路是:先定位出你要处理的下拉框(元素),然后将此元素传入Select对象中,接着用Select中的相关方法来选取下拉值
我们先要定位这个Select下拉框(元素)
WebElement element_province = driver.findElement(By.id(“province”));
然后把element传入Select
Select province = new Select(element_province);
然后由Select来操作下拉框
province.selectByIndex(0) //根据所选值的位置来选择下拉框值,从0开始
province.selectByValue(“18”) //根据value值来选择下拉框的值,比如这里的18,选择的就是海南
province .selectByVisibleText(“北京”)//这个是根据可见文本来操作下拉菜单,比如你选的北京,那么就会找到北京作为下拉框的值。
11.处理弹出来的对话框
Alert a = driver.switchTo().alert();此方法可以获取当前页面弹出的alert。
获取alert文本方法:a.getText();
模拟点击确定按钮:a.accept();
模拟点击取消按钮:a.dismiss();
12.处理浏览器弹出的新窗口
既然是新窗口,肯定是要先切换到新窗口,且每个窗口都有自己的句柄,唯一标识这个窗口,只要找到新窗口的句柄,问题就迎刃而解。
首先获得当前句柄,以便后边跳回:
String current_handles = driver. getWindowHandle();
出现新窗口之后,获取所有窗口句柄
Set<String> all_handles = driver.getWindowHandles();
循环判断,把当前句柄从所有句柄中移除,剩下的就是你想要的新窗口
Iterator<String> it = all_handles.iterator();
while(it.hasNext()){
if(current_handles == it.next()) continue;
//跳入新窗口
WebDriver window = dr.switchTo().window(it.next());
}
最后就可以在新窗口的页面进行相关操作了,在新窗口操作的时候使用新driver进行页面操作,新driver是window。
如果想回到最开始的窗口请使用:
driver.switchTo().window(current_handles);
13.执行JS脚本
有时候我们需要JS脚本来辅助我们进行测试,比如我们用JS赋值或者用js执行点击操作等。
方法一:
声明js脚本
String js =” alert(\"hello,this is a alert!\")”;
执行js脚本
((JavascriptExecutor) driver).executeScript(js);
执行之后会在浏览器上弹出一个alert,显示内容是“hello,this is a alert!”
方法二:
这个方法比较适用某些元素不易点击的情况下使用,比如网页内容太长,当前窗口太长,想要点击那些不在当前窗口可以看到元素可以用此方法。
((JavascriptExecutor) driver).executeScript(String js, Object args);
此方法有两个参数,第一个是js脚本,至于js脚本你像写点击的或者输入的脚本都可以,我们这里举例为点击操作。第二个参数是:要点击的元素。
比如我要点击百度搜索的搜索按钮,可以这样写:
((JavascriptExecutor) driver).executeScript(“arguments[0].click();”, driver.findElement(By.id(“su”)));
selenium2常用API介绍的更多相关文章
- 小程序常用API介绍
小程序常用API接口 wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...
- appium 常用api介绍(2)
前言:接着上一篇继续讲常用的一些api 参考博文:http://blog.csdn.net/bear_w/article/details/50330565 1.send_keys send_keys( ...
- appium 常用api介绍(1)
前言:android手机大家都很熟悉,操作有按键.触摸.点击.滑动等,各种操作方法可以通过api的方法来实现. 参考博文:http://blog.csdn.net/bear_w/article/det ...
- Splinter常用API介绍(转)
# Example from splinter import Browser with Browser() as browser: # Visit URL url = "http://www ...
- java===字符串常用API介绍(转)
本文转自:http://blog.csdn.net/crazy_kid_hnf/article/details/55102861 字符串基本操作 1.substring(from,end)(含头不含尾 ...
- java-org.dom4j常用api介绍
//导入必要的包 import org.dom4j.Document;//Document文档类 import org.dom4j.Element//元素节点类 import org.dom4j.QN ...
- java中FILE类常用API介绍
- APPIUM 常用API介绍(3)
1.send_keys send_keys(self, *value): Simulates typing into the element[在元素中模拟输入(开启appium自带的输入法并配置了ap ...
- 四. 几个Promise常用API的介绍与使用
四. 几个常用API的介绍与使用 1. Promise构造函数:Promise(excutor){} excutor函数:同步执行 (resolve, reject) => {} resolve ...
随机推荐
- 持续集成~Jenkins构建GitHub项目的实现
有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...
- memcache和iptables开启11211端口
linux下安装完memcached后,netstat -ant | grep LISTEN 看到memcache用的11211端口已在监听状态,但建立php文件连接测试发现没有输出结果,iptabl ...
- JS的使用
Javascript代码在浏览器中运行,做出更流畅.优美的页面效果,增强用户体验与java是完全不同的东西,只是名称类似而已写在<script></script>标签中 大小写 ...
- 零基础逆向工程18_PE结构02_联合体_节表_PE加载过程
联合体 特点 1.联合体的成员是共享内存空间的 2.联合体的内存空间大小是联合体成员中对内存空间大小要求最大的空间大小 3.联合体最多只有一个成员有效 节表数据结构说明 PE 加载 过程 FileBu ...
- jquery笔记1--选择器
一.概述:jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是“write ...
- 初识EditText - 自定义EditText形状
EditText继承自TextView,是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理. 使用 android:hint属性来指定了一段提 ...
- HDFS读写策略
数据的读取过程: 数据读取: 客户端调用FileSystem 实例的open 方法,获得这个文件对应的输入流InputStream. 通过RPC 远程调用NameNode ,获得NameNode 中此 ...
- Integer的一个小问题
看面试题的时候看到这道题: public class Demo { public static void main(String[] args) { Integer i1 = 128; Integer ...
- 香港城大:首创3D打印磁控微型机器人技术推动人体送药研究发展
香港城市大学研究团队全球首创由磁力推动.3D打印的微型机器人技术,能于生物体内精确地运载细胞到指定位置,预料可用作人体送药,为癌症治疗.细胞层面的治疗.再生医学等方面的应用,带来革命性改变. 近年,再 ...
- JsonPath 语法 与 XPath 对比
JsonPath 语法 与 XPath 对比 XPath JSONPath Description / $ the root object/element . @ the current obje ...