• webdriver---API---(java版) 高级应用


    1、封装一个javascript语句点击元素操作方法(用于解决click()方法无法点击的元素)

    package china;
    
    import org.testng.annotations.Test;
    
    import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor;
    
    import org.testng.annotations.BeforeMethod;
    
    import java.util.NoSuchElementException;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.StaleElementReferenceException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.AfterMethod;
    
    public class JavaWebDriver {
        public WebDriver driver;
        String baseUrl;
        JavaScriptExecutor js;
      @Test
      public void elementClick() throws Exception {
          WebElement inputBox=driver.findElement(By.id("query"));
          WebElement inputButton=driver.findElement(By.id("stb"));
          inputBox.sendKeys("使用javaScript语句进行页面元素点击操作");
          javaScriptClick(inputButton);
        }
          public void javaScriptClick(WebElement element)throws Exception{
              try{if(element.isEnabled()&&element.isDisplayed()){
                  System.out.println("使用javascript进行页面元素点击");
                  ((JavascriptExecutor) driver).executeScript("arguments[0].click();",element);
                  }
                  else{
                      System.out.println("页面上的元素无法进行点击操作");
                  }
              
          
                  }catch(StaleElementReferenceException e){
                      System.out.println("页面元素没有附加在网页中");
                  }catch(NoSuchElementException e){
                      System.out.println("在页面中没有找到要操作的元素");
                  }catch(Exception e){
                      System.out.println("无法完成单机动作"+e.getStackTrace());
                  }
              }
      @BeforeMethod
      public void beforeMethod() {
          baseUrl="http://www.sogou.com";
          System.setProperty("webdriver.chrome.driver", "C:\chromedriver\chromedriver.exe");
          driver=new ChromeDriver();
          driver.get(baseUrl);
      }
    
      @AfterMethod
      public void afterMethod() {
          try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
            // TODO: handle exception
        }
          driver.quit();
      }
    
    }

    2、在Ajax方式产生的浮动框中,单机选择包含某个关键字的选项

    package china;
    
    import org.testng.annotations.Test;
    
    import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor;
    
    import org.testng.annotations.BeforeMethod;
    import java.util.List;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.AfterMethod;
    
    public class Ajax {
        public WebDriver driver;
        String baseUrl;
        JavaScriptExecutor js;
      @Test
      public void f() {
          WebElement inputBox=driver.findElement(By.id("query"));
          inputBox.click();
    //      List<WebElement>suggetionOptions=driver.findElements(By.xpath("//*[@id='vl']/div/ul/li"));
    //      for(WebElement option: suggetionOptions){
    //          if(option.getText().contains("火星上建迪拜塔")){
    //              System.out.println(option.getText());
    //              option.click();
    //              break;
    //          }
    //      }
          WebElement suggetionOption=driver.findElement(By.xpath("//*[@id='vl']/div/ul/li[3]"));
          System.out.println(suggetionOption.getText());
          suggetionOption.click();
      }
      @BeforeMethod
      public void beforeMethod() {
          baseUrl="http://www.sogou.com";
          System.setProperty("webdriver.chrome.driver", "C:\chromedriver\chromedriver.exe");
          driver=new ChromeDriver();
          driver.navigate().to(baseUrl);
          driver.manage().window().maximize();
          driver.navigate().refresh();
      }
    
      @AfterMethod
      public void afterMethod() {
          try{
              Thread.sleep(5000);
          }catch(InterruptedException e){
              System.out.println("多余"+e.getStackTrace());
          }
          driver.quit();
      }
    
    }

    3、设置一个页面对象的属性值

    package china;
    
    import org.testng.annotations.Test;
    //import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor;
    import org.testng.annotations.BeforeMethod;
    import java.io.File;
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.AfterMethod;
    
    public class TestDemo  {
        public WebDriver driver;
        JavascriptExecutor js;
    
      @Test
      public void f() {
          WebElement inputBox=driver.findElement(By.id("text"));
          setAttribute( driver,inputBox,"size", "50");
          removeAttribute(driver, inputBox,"size");
          
      }
      //增加或者修改页面元素的方法
      public void setAttribute(WebDriver driver,WebElement element,String attributeName,String value){
          JavascriptExecutor js=(JavascriptExecutor) driver;
          js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])", element,attributeName,value);
      }
      //删除页面元素方法
      public void removeAttribute(WebDriver driver,WebElement element,String attributeName){
          js.executeScript("arguments[0].removeAttribute(arguments[1],arguments[2])", element,attributeName);
          
      }
      @BeforeMethod
      public void beforeMethod() {
          File file =new File("D:\workspace\webdriver Api\src\size.html");
          String filePath=file.getAbsolutePath();
          System.setProperty("webdriver.chrome.driver", "C:\chromedriver\chromedriver.exe");
          driver=new ChromeDriver();
          driver.get(filePath);
      }
    
      @AfterMethod
      public void afterMethod() {
          try{
              Thread.sleep(5000);
              }catch(InterruptedException e){
                  e.printStackTrace();
              }
          driver.quit();
      }
    
    }

    4、日期选择器上进行日期选择

    package china;
    
    import org.testng.annotations.Test;
    import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptExecutor;
    import org.testng.annotations.BeforeMethod;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.AfterMethod;
    
    public class date {
        public WebDriver driver;
        String baseUrl;
        JavaScriptExecutor js;
      @Test
      public void f() {
          //思路:在日期文本框中直接输入日期,可以变相模拟日期控件上进行选择
          WebElement dataInputBox=driver.findElement(By.id("datepicker"));
          dataInputBox.sendKeys("2/19/2017");
      }
      @BeforeMethod
      public void beforeMethod() {
          baseUrl="http://jqueryui.com/resources/demos/datepicker/other-months.html";
          System.setProperty("webdriver.chrome.driver", "C:\chromedriver\chromedriver.exe");
          driver=new ChromeDriver();
          driver.navigate().to(baseUrl);
          }
      @AfterMethod
      public void afterMethod() {
          try{
              Thread.sleep(5000);
              }catch(InterruptedException e){
                  e.printStackTrace();
              }
          driver.quit();
      }
    
    }
    
    
     
  • 相关阅读:
    遍历文件下所有文件
    访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)
    UV,IP,PV
    vector list deque
    mailto: HTML e-mail 链接
    freemarker 用template快速构造XML
    Oracle varchar2 length 分析
    Flex grid 复杂表头
    Oracle 动态设置SEQUENCE startwith 的值
    ssh和ssh2之间的免密码登陆详解
  • 原文地址:https://www.cnblogs.com/wangyinxu/p/6412207.html
Copyright © 2020-2023  润新知