Selenium框架知识点整理

1 元素定位

1.1 通过id查找---driver.findElement(By.id(String str))

假设页面写成这样:


那么可以这样找到页面的元素:
通过id查找:

WebElement element = driver.findElement(By.id("passwd-id"));

1.2 通过name查找----driver.findElement(By.name(String str))

WebElement element = driver.findElement(By.name("passwd"));

1.3 通过className查找---driver.findElement(By.className(String str))

假设页面写成这样:

Cheddar
Gouda

可以通过这样查找页面元素:

Listcheeses = driver.findElements(By.className("cheese"));

1.4 driver.findElement(By.linkText(String str))

假设页面元素写成这样:

cheese

那么可以通过这样查找:

WebElement cheese =driver.findElement(By.linkText("cheese"));

1.5 driver.findElement(By.partialLinkText(String str))

假设页面元素写成这样:

cheese

那么可以通过这样查找:

WebElement cheese =driver.findElement(By.partialLinkText("ese"));

1.6 通过xpath查找----driver.findElement(By.xpath(String str))

WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

2 API

2.1 打开网页

driver.get(String url)
例如:

    driver.get("http://www.w3school.com.cn/") 

2.2 输入框

例如:

    //找到输入框元素
    WebElement element = driver.findElement(By.id("password"));
    //在输入框中输入内容:
    element.sendKeys("123456");
    //将输入框清空:
    element.clear();
    //获取输入框的文本内容:
    element.getText();

2.3 下拉框

select.selectByIndex(int num)
num---选项对应的索引值
select.selectByValue(String str)
str---选项对应的value属性值
select.selectByVisibleText(String str)
str---选项值
例如:

//找到下拉选择框的元素:
Select select = new Select(driver.findElement(By.id("select")));
//选择对应的选择项:
select.selectByVisibleText("mediaAgencyA");
//或
select.selectByValue("MA_ID_001");
//不选择对应的选择项:
select.deselectAll();
select.deselectByValue("MA_ID_001");
select.deselectByVisibleText("mediaAgencyA");
//或者获取选择项的值:
select.getAllSelectedOptions();
select.getFirstSelectedOption();

2.4 单选按钮(Radio Button)

例如:

//找到单选框元素:
WebElement bookMode =driver.findElement(By.id("BookMode"));
//选择某个单选项:
bookMode.click();
//清空某个单选项:
bookMode.clear();
//判断某个单选项是否已经被选择:
bookMode.isSelected();

2.5 多选项(checkbox)

多选项的操作和单选的差不多,例如:

WebElement checkbox =driver.findElement(By.id("myCheckbox"));
checkbox.click();
checkbox.clear();
checkbox.isSelected();
checkbox.isEnabled();

2.6 按钮(button)

例如:

//找到按钮元素
WebElement saveButton = driver.findElement(By.id("save"));
//点击按钮
saveButton.click();
//判断按钮是否enable
saveButton.isEnabled ();

2.7 driver.navigate().back()

作用是模拟单击浏览器的后退按钮。

driver.navigate().forword()

2.8 driver.navigate(). refresh()

作用是刷新当前页面。

2.9 driver.close()

该方法的作用是模拟用户单击浏览器窗口上或者标签的关闭按钮。

driver.quit()---退出driver,并关闭所有相关的窗口

2.10 driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit);

作用:因为Load页面需要一段时间,如果页面还没加载完就查找元素,必然是查找不到的。最好的方式,就是设置一个默认等待时间,在查找页面元素的时候如果找不到就等待一段时间再找,直到超时。
参数:
time---等待时间
unit ---时间单位

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

2.11 element.submit()

方法作用:提交一个指定的表单,适用于没有提交按钮的表单。
参数:

2.12浏览器多窗口处理

在进行Web测试时,还会弹出一些子窗口,并且在多个窗口之间进行切换操作。
当进行了某个操作,将会有新窗口弹出时,如果要到新开的页面上进行操作,需要切换到新窗口。

 //Switch to new window opened 
for(String winHandle : driver.getWindowHandles()){ 
System. out.println( "+++" + winHandle); 
driver.switchTo().window(winHandle); 
}  

2.13 Frames之间的切换

有时候,切换前最好先执行:

driver.switchTo().defaultContent();

切换(第一次)到某个frame:

driver.switchTo().frame(leftFrame);

从一个frame切换(第二次)到另一个frame:

driver.switchTo().defaultContent();
driver.switchTo().frame(mainFrame);

比如,在富文本框里输入文本,然后提交

//根据iframe id
driver.switchTo().frame( "ueditor_0");
//抓取元素类
driver.findElement(By. xpath("//body[@class='view']")).sendKeys( "测试前台反馈输入 test input" );
//切换到默认的frame
driver.switchTo().defaultContent();
driver.findElement(By. xpath("//input[@value='提交']")).click();

2.14 操作对话框

Alert alert = driver.switchTo().alert();

alert.accept() --- 确定
alert.dismiss() --- 取消
alert.getText() --- 提示信息

2.15 上传文件

WebElement adFileUpload = driver.findElement(By.id("WAP-upload"));
String filePath = "C:\\test\\uploadfile\\media_ads\\test.jpg";
adFileUpload.sendKeys(filePath);

或者

setClipboardData("E:\\autotest\\huawei.jpg");           
driver.findElement(By.name("goods_img")).click();
try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
        //
        uploadFile(robot);
//该方法用来设置剪贴板上的数据
public void setClipboardData(String string) {
        StringSelection stringSelection = new StringSelection(string);
        Toolkit.getDefaultToolkit().getSystemClipboard()
                .setContents(stringSelection, null);
  }
//该方法用来上传附件
 public void uploadFile(Robot robot) {
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_V);
            robot.keyRelease(KeyEvent.VK_V);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_ENTER);
            robot.keyRelease(KeyEvent.VK_ENTER);
  } 

2.16 结果验证

例如:

assertEquals(driver.getCurrentUrl(),"http://localhost:90/upload/flow.php?step=cart");
assertEquals(driver.getTitle(),"报销单详情 - 费用管理 ");
assertEquals(driver.findElement(By.xpath("//*[@id='ECS_MEMBERZONE']/font/font")).getText(),"admin");

你可能感兴趣的:(Selenium框架知识点整理)