selenium实战:CSS定位实战

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;

import java.util.concurrent.TimeUnit;


public class FindByCss {

    public static void main(String[] args) {
        //指定chrome驱动
        System.setProperty("webdriver.chrome.driver", "C:\\drivers\\chromedriver.exe");
        //测试八种方法,测试时请指定方法
        //一、CSS属性定位
        //CssById();
        //CssByClass();
        //CssByTag();

        //二、CSS通过其他属性定位
        //CssByName();
        //CssByAutocomplete();
        //CssByType();

        //三、CSS:通过标签与属性的组合来定位元素
        //CssByTagAndId();
        //CssByTagAndClass();
        //CssByTagAndAutocomplete();

        //四、CSS:层级关系定位
        //CssByLevelId();
        //CssByLevelClass();

        //五、CSS:索引
        CssByIndex();

        //二、XPath标签的定位方法
        //XpathByTagId();
        //XpathByTagName();
        //XpathByTagClass();
        //XpathByTagOther();

        //三、XPath层级的定位方法
        //XpathByLevel();

        //四、XPath索引的定位方法
        //XpathByIndex();

        //五、逻辑运算
        //XpathByLogic();

        //六、模糊匹配
        //XpathByLikeName();
        //XpathByLikeText();
        //XpathByAsBegin();
        //XpathByAsEndsWith();
        //pathByAsEndMatch();


    }

    /**
     * 一、CSS:属性定位
     */

    /**
     * 1. CSS通过id属性定位,需要加上标识符“#”,如:#kw;
     */
    public static void CssById() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过id定位百度搜索输入框,并输入“CSS通过id属性定位”
        WebElement element = driver.findElement(By.cssSelector("#kw"));
        element.sendKeys("CSS通过id属性定位");
    }


    /**
     * 2. CSS通过class属性定位,需要加上标识符 “.”,如:.s_ipt;
     */
    public static void CssByClass() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过CLASS定位百度搜索输入框,并输入“CSS通过class属性定位”
        WebElement element = driver.findElement(By.cssSelector(".s_ipt"));
        element.sendKeys("CSS通过class属性定位");

    }

    /**
     * 3. CSS通过标签属性定位,不需要任何标示符,如:input;
     */
    public static void CssByTag() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //这里运行会报错,因为标签“input”不是唯一的;这里主要是了解写法
        WebElement element = driver.findElement(By.cssSelector("input"));
        element.sendKeys("CSS通过标签定位");

    }

    /**
     * 二、CSS:通过其它属性定位
     */

    /**
     * 1. CSS通过其它属性定位:name
     */
    public static void CssByName() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过其它属性:NAME定位百度搜索输入框,并输入“CSS通过其他属性:name定位”
        WebElement element = driver.findElement(By.cssSelector("input[name=wd]"));
        element.sendKeys("CSS通过其他属性:name定位");

    }




    /**
     * 2. CSS:通过autocomplete属性定位元素;
     */
    public static void CssByAutocomplete() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过autocomplete定位百度搜索输入框,并输入“css通过autocomplete定位”
        WebElement element = driver.findElement(By.cssSelector("[autocomplete = 'off']"));
        element.sendKeys("css通过autocomplete定位");

    }

    /**
     * 3. CSS通过type属性定位元素
     */
    public static void CssByType() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        WebElement element1 = driver.findElement(By.cssSelector("[autocomplete = 'off']"));
        element1.sendKeys("css通过autocomplete定位");
        //CSS通过type属性定位百度一下并点击”
        WebElement element2 = driver.findElement(By.cssSelector("[type = 'submit']"));
        element2.click();

    }

    /**
     * 三、CSS:通过标签与属性的组合来定位元素
     */

    /**
     * 1. CSS通过标签与id属性组合定位元素
     */
    public static void CssByTagAndId() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过标签与id属性定位百度搜索输入框,并输入“CSS通过标签与id属性定位”
        WebElement element = driver.findElement(By.cssSelector("input#kw"));
        element.sendKeys("CSS通过标签与id属性定位");

    }


    /**
     * 2. CSS通过标签与class属性定位元素
     */
    public static void CssByTagAndClass() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过标签与class属性定位百度搜索输入框,并输入“CSS通过标签与class属性定位”
        WebElement element = driver.findElement(By.cssSelector("input.s_ipt"));
        element.sendKeys("CSS通过标签与class属性定位");

    }

    /**
     * 3. CSS通过标签与其它属性组合定位元素;
     */
    public static void CssByTagAndAutocomplete() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过标签与autocomplete属性定位百度搜索输入框,并输入“CSS通过标签与autocomplete属性定位”
        WebElement element = driver.findElement(By.cssSelector("input[autocomplete = 'off']"));
        element.sendKeys("CSS通过标签与autocomplete属性定位");

    }

    /**
     * 四、CSS:层级关系定位
     */

    /**
     * 1. form的id属性
     */
    public static void CssByLevelId() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过层级定位百度搜索输入框,并输入“css通过定位它爷爷来定位input输入框”
        WebElement element = driver.findElement(By.cssSelector("form#form>span>input"));
        element.sendKeys("css通过By.cssSelector(\"form#form>span>input\")定位input输入框");

    }

    /**
     * 2. form的class属性
     */
    public static void CssByLevelClass() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        //CSS通过层级定位百度搜索输入框,并输入“css通过定位它爷爷来定位input输入框”
        WebElement element = driver.findElement(By.cssSelector("form.fm>span>input"));
        element.sendKeys("css通过By.cssSelector(\"form.fm>span>input\")定位input输入框");

    }

    /**
     * 五、CSS:索引
     */

    /**
     *  1.如果一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。
     *
     *  2.虽然双胞胎兄弟很难识别,但是出生是有先后的,于是可以通过它在家里的排行老几定位到。
     *
     *  3. selenium的索引是从1开始的
     *
     *  4. css也可以通过索引option:nth-child(1)来定位子元素,这点与xpath写法用很大差异;其实很好理解,直接翻译过来就是第几个小孩;
     */

    public static void CssByIndex() {
        WebDriver driver = new ChromeDriver();
        String url = "http://www.baidu.com";
        driver.get(url);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        //定位id是s-top-left的div下多个同等级的a标签,选择第1……n个
        WebElement option1 = driver.findElement(By.cssSelector("div#s-top-left>a:nth-child(1)"));
        option1.click();
        WebElement option2 = driver.findElement(By.cssSelector("div#s-top-left>a:nth-child(2)"));
        option2.click();
        WebElement option3 = driver.findElement(By.cssSelector("div#s-top-left>a:nth-child(3)"));
        option3.click();
        WebElement option4 = driver.findElement(By.cssSelector("div#s-top-left>a:nth-child(4)"));
        option4.click();
        WebElement option5 = driver.findElement(By.cssSelector("div#s-top-left>a:nth-child(5)"));
        option5.click();
        WebElement option6 = driver.findElement(By.cssSelector("div#s-top-left>a:nth-child(6)"));
        option6.click();

    }



}

 

posted @ 2021-08-15 12:44  测试长流  阅读(170)  评论(0)    收藏  举报