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);
  }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM