2_Selenium對象識別

1 準備工做html

  • firebug和firepath

    咱們使用xpath進行元素定位,因此須要安裝firefox的兩個插件,幫助編寫xpathjava

  • html知識

    在編寫xpath的時候,須要查看html代碼,因此須要理解html知識,能夠到http://www.w3school.com.cn/去自學ios

  • xpath知識

    也能夠到http://www.w3school.com.cn/學習瀏覽器

2 通常對象識別及操做代碼post

package com.selenium.test;


import java.util.List;
import java.util.Set;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;


public class Test2 {

    public static void main(String[] args) throws InterruptedException {

        WebDriver driver = new FirefoxDriver();    //啓動火狐瀏覽器
        driver.manage().window().maximize();    //最大化瀏覽器
        driver.navigate().to("http://www.baidu.com/");    //導航到百度
        
        //登陸 - 連接
        WebElement linkLogin = driver.findElement(By.xpath("//div[@id='u1']/a[text()='登陸']"));
        linkLogin.click();
        
        //等待2秒
        Thread.sleep(3000);
        
        //用戶名、密碼 - 輸入框
        WebElement textUsername = driver.findElement(By.xpath("//input[@id='TANGRAM__PSP_8__userName']"));
        textUsername.clear();
        textUsername.sendKeys("栗子測試");
        WebElement textPassword = driver.findElement(By.xpath("//input[@id='TANGRAM__PSP_8__password']"));
        textPassword.clear();
        textPassword.sendKeys("2472471982");
        
        //登陸 - 按鈕
        WebElement buttonLogin = driver.findElement(By.xpath("//input[@id='TANGRAM__PSP_8__submit']"));
        buttonLogin.click();
        
        //等待2秒
        Thread.sleep(3000);
        
        //懸停
        Actions action = new Actions(driver); 
        WebElement linkMe = driver.findElement(By.xpath("//a[@id='s_username_top']/span"));
        action.moveToElement(linkMe).perform();
        
        //帳號設置 - 連接
        WebElement linkSeniorSearch = driver.findElement(By.xpath("//div[@id='s_user_name_menu']/div/a[3]"));
        linkSeniorSearch.click();
        
        //帳號設置 - 窗口跳轉
        String firstWindowHandle = driver.getWindowHandle();    //獲取第一個窗口句柄
        Set<String> towHandles = driver.getWindowHandles();
        for (String handle : towHandles) {    //遍歷全部窗口句柄
            System.out.println("+++" + handle); 
            driver.switchTo().window(handle);    //切換兩次,切換到第二個窗口
        }
        
        //修改資料 - 連接
        WebElement linkModifyData = driver.findElement(By.xpath("//div[@id='content']//a[text()='修改資料']"));
        linkModifyData.click();
        
        //修改資料 - 窗口跳轉
        Set<String> threeHandles = driver.getWindowHandles();    //獲取三個窗口句柄
        threeHandles.removeAll(towHandles);        //移除原來的兩個句柄
        String thirdWindowHandle = threeHandles.iterator().next();    //剩下一個句柄
        driver.switchTo().window(thirdWindowHandle);    //切換到第三個窗口
        
        //性別 - 單選(被看作一組)
        List<WebElement> radiosGender = driver.findElements(By.xpath("//input[@name='passport_sex']"));    //定位全部單選按鈕
        radiosGender.get(1).click();    //index從0開始
        
        //血型 - 此下拉框非Select,只是樣式像
        WebElement divBlood= driver.findElement(By.xpath("//div[@id='cussel1000002']/div"));    
        divBlood.click();
        WebElement linkBlood= driver.findElement(By.xpath("//div[@id='cussel1000002']//a[text()='AB']"));    
        linkBlood.click();
        
        //保存 - 按鈕
        WebElement buttonSaveBasic = driver.findElement(By.xpath("//form[@id='profile']/child::input"));
        buttonSaveBasic.click();
        
        //詳細資料 - 連接
        WebElement linkDetailedInfo = driver.findElement(By.xpath("//div[@id='content']//a[text()='詳細資料']"));
        linkDetailedInfo.click();
        
        //等待1秒
        Thread.sleep(1000);
        
        //性格 - 多選框(被看作一組)
        List<WebElement> checkboxCharacter = driver.findElements(By.xpath("//form[@id='profile']/table//tr[@class='passport_character']//input"));
        WebElement  element = checkboxCharacter.get(6);
        element.click();
        
        //保存 - 按鈕
        WebElement buttonSaveDetailedInfo = driver.findElement(By.xpath("//form[@id='profile']/child::input"));
        buttonSaveDetailedInfo.click();
        
        //關閉當前窗口,回到第一個窗口
        driver.close();
        driver.switchTo().window(firstWindowHandle);

    }

}

 3 其餘對象操做及代碼學習

  • 下拉框
WebElement selectElement = driver.findElement(By.xpath("//td[@id='adv-setting-4']/select"));    //先定位下拉框
Select select = new Select(selectElement);
select.selectByVisibleText("最近一天");
  • 上傳文件
WebElement file = driver.findElement(By.xpath("//div[@id='uploadfile']/input"));
file.sendKeys("C:\\test.txt");
  • JS
JavascriptExecutor js2 = (JavascriptExecutor)driver;
js2.executeScript("alert('栗子測試,QQ:2472471982')");
Alert alert = driver.switchTo().alert();    //切換到彈出窗
alert.accept();
  • JS屬性設置
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('saveButton').firstElementChild.disabled = false");
  • iframe
WebElement iframe = driver.findElement(By.xpath("//iframe[@name='contect']"));
driver.switchTo().frame(iframe);
WebElement text = driver.findElement(By.xpath("//input[@id='username']"));
text.clear();
text.sendKeys("栗子測試,QQ:2472471982");
  • 彈出框
WebElement link = driver.findElement(By.xpath("//div[@id='alert']/input"));
link.click();
Alert alert = driver.switchTo().alert();    //切換到彈出窗
alert.accept();
  • 後退
driver.navigate().back();

 

栗子測試

  • 全部文章均爲原創,是栗子測試全部人員智慧的結晶,若有轉載請標明出處
  • 若是您在閱讀以後以爲有所收穫,請點擊右下角推薦
  • QQ:2472471982,歡迎你們前來諮詢和探討(暗號:栗子測試)
相關文章
相關標籤/搜索