常见定位元素及API模块——自动化测试学习

一、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.浏览器滚动条操作

此文不完善,持续学习中,如有问题请各位多多指点!!!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值