zoukankan      html  css  js  c++  java
  • selenium自动化测试实例

    11.1使用JavaScripExecutor单击元素

    被测试网页:http://www.sogou.com
    Java代码 
    public class NewTest {
         WebDriver driver;
         String baseUrl;
         JavascriptExecutor js;
      @Test
      public void f() throws Exception {
          
         WebElement searchInputBox=driver.findElement(By.id("query"));
         WebElement searchButton=driver.findElement(By.id("stb"));
         searchInputBox.sendKeys("使用javascipt语句进行页面元素的单击");
         //调用等装好的JavaScipt方法来单击sogou首页的搜索按钮
         JavaScriptClick(searchButton);  
      }
      public void JavaScriptClick(WebElement element) throws Exception{
          try{
              //if条件判断函数参数传入的element元素是否处于可单击状态,以及是否显示在页面上
              if(element.isEnabled()&&element.isDisplayed()){
                  System.out.println("使用JavaScipt进行页面元素的单击");
                  //执行JavaScipt语句argument[0].click()
                  ((JavascriptExecutor) driver).executeScript("arguments[0].click();",element);
              }else{
                  System.out.println("页面上的元素无法进行单击操作");
              }
              //当出现异常的时候,catch语句会被执行,打印相关的异常信息和堆栈信息
          }catch(StaleElementReferenceException e){
              System.out.println("页面元素没有附加在网页中"+e.getStackTrace());
          }catch(NoSuchElementException e){
              System.out.println("页面中没有找到要操作的页面元素"+e.getStackTrace());
          }catch(Exception e){
              System.out.println("无法完成单击动作"+e.getStackTrace());
          }
      }  
    代码解释:方法里面的代码实现就是一种封装,把常用的操作卸载一个函数里面,就可以很方便的重复调用,减少冗余代码的编写,提高测试代码的编写效率。
    ————————————————————————————————————————————————————
    11.2在Ajax方式产生的浮动框中,单击选择包含某个关键字的选项
    目的:有些被测试页面包含Ajax的局部刷新机制,并且会产生显示多条数据的浮动框,需要单击选择浮动框中包含某个关键的选项
     
    被测试网页:http://www.sogou.com
    Java代码
      @Test
      public void f() throws Exception {
          
         WebElement searchInputBox=driver.findElement(By.id("query"));
         //WebElement searchButton=driver.findElement(By.id("stb"));
         searchInputBox.click();
         //将浮动框中的所有选项存储到suggetionOptions的List容器中,直接复制的xpath是://*[@id="vl"]/div[1]/ul/li[3],这里的双引号需要转义一下
         //List需要进入包,刚开始引入的import java.awt.List;报错,引入import java.util.List;成功
         List <WebElement>suggetionOptions=driver.findElements(By.xpath("//*[@id="vl"]/div[1]/ul/li[3]"));
         for(WebElement element:suggetionOptions){
             if(element.getText().contains("")){
                 System.out.println(element.getText());
                 element.click();
                 break;
             }
         }
      }  
    ————————————————————————————————————————————————————————
    11.3设置一个页面对象的属性值
    目的:掌握设定页面对象的所有属性的方法,本节以设定文本框的可编辑状态和显示长度为目标。
    被测试网页:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>设置文本框属性</title>
    </head>
    <body>
    <input type="text" id="text" value="今年的西瓜相当甜" size="100">文本框
    </body>
    </html>
    java代码
    public class NewTest {
         WebDriver driver;
         String baseUrl; 
         JavascriptExecutor js;
      @Test
      public void f() throws Exception {
          
         WebElement textInputBox=driver.findElement(By.id("text"));
         //调用setAttribute方法修改文本框的value属性值,改变文本框中显示的文字
        setAttribute(driver,textInputBox,"value","文本框的文字和长度属性已经被修改了");
        //调用setAttribute方法修改文本框的size属性值,改变文本框中的长度
        setAttribute(driver,textInputBox,"size","10");
        //调用removeAttribute方法删除文本框中的size属性值
        //removeAttribute(driver,textInputBox,"size");
        //增加页面元素属性属性和修改页面元素属性的封装方法
      }
     
    private void setAttribute(WebDriver driver2, WebElement textInputBox, String string, String string2) {
        // TODO Auto-generated method stub
         JavascriptExecutor js=(JavascriptExecutor) driver;
          Object element = null;
        Object attributeName = "aa";
        Object value = null;
        js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])",element,attributeName,value);
    }
    /*private void removeAttribute(WebDriver driver2, WebElement textInputBox, String string) {
        // TODO Auto-generated method stub
          JavascriptExecutor js=(JavascriptExecutor) driver;
          Object element = null;
        Object attributeName = null;
        Object value = null;
        js.executeScript("arguments[0].removeAttribute(arguments[1],arguments[2])",element,attributeName,value);
        
    }*/
     
    @BeforeMethod
      public void beforeMethod() {
          baseUrl="C:\Users\Administrator\WebstormProjects\untitled\11.3.html";
        System.setProperty("webdriver.chrome.driver","C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe");
         driver=new ChromeDriver(); 
         driver.get(baseUrl);
      }  
  • 相关阅读:
    如果经常访问国外站
    CouchDB降临Android
    ubuntu server操作流程百岁版
    开源HTML解析工具包jsoup 1.3.1发布
    LEMP aka LNMP
    VC编译选项
    gae地址
    feedparser 同步博客园rss到 qq zone
    跨系统共享键盘鼠标利器分享:synergy
    支持ff,ie的回车提交
  • 原文地址:https://www.cnblogs.com/superbears/p/6224330.html
Copyright © 2011-2022 走看看