zoukankan      html  css  js  c++  java
  • (六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>
  • 相关阅读:
    UNO卡牌游戏—个人博客
    Java第09次实验(IO流)--实验报告
    UNO卡牌游戏—个人博客
    JAVA面向对象编程课程设计——UNO卡牌游戏
    Java——流、文件与正则表达式
    网络1911、1912 D&S第5次作业--批改总结
    java课程设计之--Elasticsearch篇
    C博客作业05--指针 批改总结
    树、二叉树、查找算法总结
    KMP算法的next/nextval值的个人理解
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/9721540.html
Copyright © 2011-2022 走看看