一、8大元素定位元素
1.元素的定位:
By.id
By.name
By.tagName
By.className
2.链接的文字
By.linkText
By.partialLinkText
By.xpath
By.css By.cssSelector
3.table(很难定位)
4.常见的框架
关键字框架,混合框架
关键字驱动、数据举动、混合驱动
新建一个class
import org.openqa.selenium.WebDriver;
import org.openqa.selelnium.firefox.FireDriver;
webDriver driver;
system.setProprty("webdriver.firefox.bin","E:\\firefox\\firefox.exe");
driver = new FirefoxDriver();
driver.get("http://www.baidu.com");
driver.manage().timeouts.implicitlyWait(5,TimeUnit.SECONDS);//停留5秒
//driver.findElement(By.id("kw")).sendKeys("selenium");
//driver.findElement(By.name("wd")).sendKeys("webdriver");
//driver.findElement(By.className("s_ipt")).sendKeys("test");
//driver.findElement(By.tagName("input")).sendKeys("java");//会报错,input不是唯一,需要排除一些type=hidden,后面做
//driver.findElement(By.linkText("糯米")).click();
//driver.findElement(By.partialLinkText("糯")).click();
//driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("selenium"); // .//*[@id='form']/span[1]/input[1]
driver.findElement(By.cssSelector("#kw")).sendKeys("test");
//table 定位
String url = "D:\\www.\\table.html";
driver.get(url);
System.out.print(driver.findElement(By.tagName("table"));
WebElement Table = driver.findElement(By.tagName("table");
Table.findElement(By.tagName("tr")
//selelnium中使用的tr,永远找到的是第一个,就算用例for循环也是第一个
//findElement它是定位单一的一个元素的方法,定位一组方法我们需要用findElments
String str = "第二行第1列";
String str1 = "第三行第5列";
List<WebElement> rows = Table.findElements(By.TagName("tr");
for(WebElement row:rows){
List<WebElement> tds = row.findElement(By.tagName("tr"));
for(WebElement td:tds){
String vaule = td.getText();
//如果使用vaule == str就会出错,因为str是一个值,但value是一个对象,故用vaule.equal(str)
if(vaule.equal(str) || vaule.equal(str1)){
System.out.print(vaule);
}else{
System.out.print("error);
}
}
}
二、常见API模块
1.打开网址方式:
Driver.get()
Driver.navigate.to()
2.操作浏览器API:
Driver.navigate().refresh() //刷新
Driver.navigate().forward() //前进
Driver.navigate().back() //回退
Driver.getTitle()
Driver.getCurrentUrl() //获取当前的URL
Friver.manage().window().maximize(); //当前窗口最大化
//窗口的关闭
Driver.quite() //没有完全关闭,占用了进程..内存
Driver.close() //完全关闭
3.滚动条操作:
//将driver转换为js的对象
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(0,document.body.scrollHeight)"));
//通过执行js在frame富文本框中输入信息
waitTime(8);
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById(\"ueditor_0\").contentWindow.document.body.innerHTML=\"这是一个通过js写入的frame里面的");
4.操作浏览器cookie
//获取cookie
public void getcookie(){
Set<Cookie> allCookies = driver.manage().getCookie();
for(Cookie loadedCookie : allCookies
{
System.out.println("作用域:" + loadCookie.getDomain()+",名称.." + ",值" +loadCookie.getValue() + ",过期时间:" + loadedCookie.getExpiry());
}
}
getcookie();
//删除cookie 有3中方式,但是基本上都是所有删除的
public void decookie(){
message("删除cookie");
driver.manage().deleteAllCookie();
}
//添加cookie
public void setcookie(){
Cookie cookie = new Cookie("selenium","webdriver","/",null);
driver.manage().addCookie(cookie);
}
5.输入框操作API:
Sendkeys()
Clear()
getText()
Clik()
6.选择框处理:
单选框、复选框、下拉框
public void box(){
driver.get("D:\\www\\study.html");
message("定位单选框api进行中");
WebElement radio = driver.findElement(By.name("Sex"));
message("检查元素是否选中api进行中");
Checkbox(radio,"单选框");
message("定位复选框API进行中");
WebElement box = driver.findElement(By.name("Bike"));
message("检查元素是否选中api进行中");
Checkbox(box,"复选框");
message("下拉框api进行中");
Select list = new Select(driver.findElement(By.name("listname")));
message("下拉框通过index进行选择api进行中");
message("下拉框通过属性进行选择api进行中");
list.selectByValue("下拉框三");
}
7.页面元素处理:
①等待加载
public void waitTime(int a){
message("等待时间方法进行中");
try{
Thread.sleep(a);
}catch(InterruptedException e){
e.printStackTrace();
}
}
②根据属性获取元素值
③获取对象的css属性
④获取对象状态:
//页面是否显示isdisplay()
//元素是否存在find_element
//元素是否选中isSelectd()
//是否处于灰化状态isEnabled()
public void Checkbox(WebElement box,String log){
message("对象是否灰化api进行中")
if(!box.isEnabled()){
message("isenabled api进行中");
}
message("isselected api 进行中");
if(!box.isSelected()){
message(log+"进行选择api进行中");
box.click();
}
}
8.窗口处理API:
①Iframe窗口处理
public void frame(){
message("wiki")
String url = "http://immooc.com/wiki/create";
driver.get(url);
message("通过执行js在frame富文本框中输入信息")
waitTime(8);
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("document.getElementById(\"ueditor_0\").contentWindow.document.body.innerHTML=\"这是一个通过js写入的frame里面的");
getcookie();
waitTime(20);
frame();
}
②弹窗处理
public void confirm(){
message("处理弹窗问题API进行中");
driver.get("D:\\www\\study.html");
driver.findElement(By.id("alert")).click();
//获取alert对象
Alert alert = driver.switchTo().alert();
waitTime(5);
alert.accept();
waitTime(5);
driver.findElement(By.id("button")).click();
Alert alert2 = driver.switchTo().alert();
alert2.accept();
}
9.JS操作:
①js定位 ②js点击元素
10.特殊API:(监听事件)
①报错时截屏保存 ②模拟鼠标右键操作 ③鼠标悬浮
11.上传文件
12.日期控件处理
13.浏览器滚动条操作
此文不完善,持续学习中,如有问题请各位多多指点!!!