(六-3)从查找元素到操作元素

在WebDriver中,将这些关于鼠标操作的方法封装在ActionChains类提供。

Actions 类提供了鼠标操作的常用方法:

  • contextClick() 右击

  • clickAndHold() 鼠标点击并控制

  • doubleClick() 双击

  • dragAndDrop() 拖动

  • release() 释放鼠标

  • perform() 执行所有Actions中存储的行为


文本框输入文本:sendkeys()

清空文本框:clear()

获取文本:getText()  ---> 只能取出标签中间的文本

获取title:getTitle()  

获取tagName:getTagName()

获取属性值:getAttribute()

判断元素是否展示:isDisplayed()

判断选择框是否被选取:isSelected()

判断输入框是否被激活:isEnabled()

eg:

package Day2OperateElement;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class OperateElement {
    WebDriver webDriver;
    @BeforeMethod
    public void OpenBrowser(){
        System.setProperty("webdriver.chrome.driver","D:\\Program Files\\Java\\Webautomation\\drivers\\chromedriver.exe");
        webDriver = new ChromeDriver();
    }
    /* 1.click()
    打开百度新闻链接并校验当前链接是否正确打开 */
    @Test
    public void OpenLink(){
        webDriver.get("https://www.baidu.com/");
        WebElement newslink = webDriver.findElement(By.name("tj_trnews"));
        newslink.click();
        String linkurl = webDriver.getCurrentUrl();
        Assert.assertEquals(linkurl,"http://news.baidu.com/","当前输出不是新闻链接");
    }
    /* 2.sendKeys(),getTitle(),
    打开百度搜索框输入selenium,
    点击百度一下搜索,搜索出来的第一行是不是指定值来确定搜索结果
    当前搜索结果正确,清除搜索框内内容*/
    @Test
    public void sendkeysTest() throws InterruptedException {
        webDriver.get("https://www.baidu.com/");
        //定位搜索框
        WebElement inputkuang = webDriver.findElement(By.id("kw"));
        //输入selenium值,注意sendkeys只针对文本框
        inputkuang.sendKeys("selenium");
        //定位百度按钮并点击
        WebElement baiduButton = webDriver.findElement(By.id("su"));
        baiduButton.click();
        //给页面一个反应时间3s,网速快的时候可能没到就获取到了,网速慢可能30s都不行,sleep不是最好的方法
        Thread.sleep(3000);
        //获取页面title并做校验
        String title = webDriver.getTitle();
        Assert.assertEquals(title,"selenium_百度搜索");
        //清除输入框文本,如果有出错,则清空重新输入
        inputkuang.clear();
        //清除结束后校验文本框内的String是否是空,不建议再assert方法胡再操作
        //gettext获取的标签中间的值,所以当input框输入时并不在inputi标签中间,会获取到空白值
        String title2 = inputkuang.getText();
        System.out.println(title2);
    }
    /* 3.getText(),
    打开百度首页获取右上角所有的文本并输出*/
    @Test
    public void getTexttest(){
        webDriver.get("https://www.baidu.com/");
        List<WebElement> listtext = webDriver.findElements(By.xpath("//*[@id=\"u1\"]/a"));
        for (int i =0;i < listtext.size();i++){
            String text1 = listtext.get(i).getText();
            System.out.println(text1);
        }
    }
    /*4.getTagname(),
    打开百度首页,获取文本框的tagname,检验是不是input*/
    @Test
    public void getTagnametest(){
        webDriver.get("https://www.baidu.com/");
       WebElement TgElement = webDriver.findElement(By.id("kw"));
       String tagname = TgElement.getTagName();
       Assert.assertEquals(tagname,"input","输出tagname是错误的");
    }
    /* 5.getAttribute(),
    getText只能获取到标签内的文本,如果要获取value也就是一个框内的默认值和输入值则用当前的getAttribute, 或者按钮值是什么
    ①打开百度搜索框(打开页面,定位元素,操作元素,输出结果,比对结果)
    ②输入webdriver
    ③获取搜索框的value的属性值
   */
    @Test
    public void getAttributeTest(){
        webDriver.get("https://www.baidu.com/");
        WebElement AtElement = webDriver.findElement(By.id("kw"));
        AtElement.sendKeys("webdriver");
        String  att = AtElement.getAttribute("value");
        System.out.println(att);
    }
    @Test
    //对于按钮,查看网页元素上面写得是value,查看百度一下的按钮值是不是百度一下
    public void getAttributeTest1(){
        webDriver.get("https://www.baidu.com/");
        String buttonatt = webDriver.findElement(By.id("su")).getAttribute("value");
        Assert.assertEquals(buttonatt,"百度一下","不符合预期");
    }
    /* 6.isDisplayed(),
     打开百度,校验百度以下按钮已经展示(先定位按钮,再检验是否展示)
    * */
    @Test
    public void isDisplayedTest(){
        webDriver.get("https://www.baidu.com/");
        Boolean bl = webDriver.findElement(By.id("su")).isDisplayed();
        Assert.assertTrue(bl,"校验百度按钮是否显示");
    }
    /* 7.isSelected(),
     判断选择框是否选择:单选框,复选框是否被选中,返回也为布尔类型
     打开页面https://www.wjx.cn/jq/17141631.aspx(此处选择问卷星的任意一份问卷)
     校验单选框已经选中
    * */
    @Test
    public void isSelectedTest(){
        webDriver.get("https://www.wjx.cn/jq/17141631.aspx");
        WebElement radio1 = webDriver.findElement(By.xpath("//*[@id=\"divquestion1\"]/ul/li[1]/a"));
        radio1.click();
        Boolean bl2 = radio1.isSelected();
        Assert.assertTrue(bl2,"未婚没有被选中");
    }
    @Test
    public void isSelectedTest1(){
        webDriver.get("C:\\Users\\CXM\\Desktop\\textselected.html");
        WebElement radio2 = webDriver.findElement(By.xpath("//*[@id=\"as\"]"));
        radio2.click();
        Boolean bl3 = radio2.isSelected();
        Assert.assertTrue(bl3,"男没有被选中");
    }
    /*8.isEnabled(),
    测试当前按钮是否激活*/
    @Test
    public void isEnabled(){
        webDriver.get("C:\\Users\\CXM\\Desktop\\textselected.html");
        Boolean enablea = webDriver.findElement(By.id("login")).isEnabled();
        Assert.assertTrue(enablea);
    }
    /* 9.打开百度截图
    把webelement的格式webdriver强制转换成文件流类型 截图只是当前打开的窗口,比如一个网页很长,但是他截图当前窗口*/
    @Test
    public void screenShotFile(){
        //下面代码得到截图保存再D盘
        webDriver.get("https://www.baidu.com/");
        File screenShotFile = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
        try{
            FileUtils.copyFile(screenShotFile,new File("D:/test.png"));
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}

 

 

 

自己写了一个html操作页面放在桌面供给当前测试用例进行元素操作:

 <html>  
  <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
          <title>Checkbox</title>  
      </head>  
      <body>  
          <h3>复选框:CheckBox</h3>  
          <form>  
              <!-- <label for="c1">checkbox1</label> -->  
             <input type="checkbox" id="c1" />checkbox1<br>  
             <!-- <label for="c2">checkbox2</label> -->  
             <input type="checkbox" id="c2" />checkbox2<br>  
             <!-- <label for="c3">checkbox3</label> -->  
             <input type="checkbox" id="c3" />checkbox3<br>  
         </form>  
         <h3>单选:Radio</h3>
         <form>  
             <label  value="radio"></label>   
             <input type="radio"   name="sex" value="male" id="as"/><br>  
             <label  value="radio1"></label>  
             <input type="radio"   name="sex" value="female" id="sd"/>  
         </form> 
         <input type="submit" name="denglu" id="login" value="登陆" />
         <input type="button" name="zhuce" id="register" value="注册" />
 <!-- <form>  
 <input type="radio" name="sex" value="male" /> Male  
 <br />  
 <input type="radio" name="sex" value="female" /> Female  
 </form> -->    
     </body>  
 </html>

 

posted @ 2018-09-28 23:50  陈晓猛  阅读(294)  评论(0编辑  收藏  举报