zoukankan      html  css  js  c++  java
  • selenium 定位元素

    一、单个元素的定位方式:

    By.className(className))
    By.cssSelector(selector)
    By.id(id)
    By.linkText(linkText)
    By.name(name)
    By.partialLinkText(linkText)
    By.tagName(name)
    By.xpath(xpathExpression)


    例子如下:

    public static void main(String[] args) {
    
     WebDriver driver = new FirefoxDriver();
     driver.get("http://www.51.com");
     WebElement element = driver.findElement(By.className("t_label"));
     System.out.println(element.getTagName());
    
    }
    //使用ID定位
    WebElement element = dr.findElement(By.id("passport_51_user"));
     System.out.println(element.getAttribute("title"))
    
    
    //使用CSS选择器定位
    WebElement e1 = dr.findElement(By.cssSelector("#passport_51_user"));
    //使用name定位
    WebElement e = dr.findElement(By.name("passport_51_user"));
    
    

    二、多个元素的定位;

    1. import java.io.File;
    2. import java.util.List;
    3.
    4. import org.openqa.selenium.By;
    5. import org.openqa.selenium.WebDriver;
    6. import org.openqa.selenium.WebElement;
    7. import org.openqa.selenium.firefox.FirefoxBinary;
    8. import org.openqa.selenium.firefox.FirefoxDriver;
    9.
    10. public class FindElementsStudy {
    11.
    12. /**
    13. * 
    14. */
    15. public static void main(String[] args) {
    16. WebDriver driver = new FirefoxDriver();
    17. driver.get("http://www.51.com");
    18.
    19. //定位到所有<input>标签的元素,然后输出他们的id
    20. List<WebElement> element = driver.findElements(By.tagName("input"));
    21. for (WebElement e : element){
    22. System.out.println(e.getAttribute("id"));
    23. }
    24.
    25. driver.quit();
    26. }
    27. }

     三、iframe的定位

    Html 代码
    main.html
    
    <html>
    <head>
    <title>FrameTest</title>
    </head>
    <body>
    <div id = "id1">this is a div!</div>
    <iframe id = "frame" frameborder="0" scrolling="no"
    style="left:0;position:absolute;" src = "frame.html"></iframe>
    </body>
    </html>
    
    frame.html
    <html>
    <head>
    <title>this is a frame!</title>
    </head>
    <body>
    <div id = "div1">this is a div,too!</div>
    <label>input:</label>
    <input id = "input1"></input>
    </body>
    </html>
    
    Java 代码
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class FameStudy {
    
    public static void main(String[] args) {
      WebDriver dr = new FirefoxDriver();
      String url = "\Your\Path\to\main.html";
      dr.get(url);
      //在default content 定位id="id1"的div
      dr.findElement(By.id("id1"));
      //此时,没有进入到id="frame"的frame 中时,以下两句会报错
      dr.findElement(By.id("div1"));//报错
      dr.findElement(By.id("input1"));//报错
        //进入id="frame"的frame 中,定位id="div1"的div 和id="input1"的输入框。
        //重点使用下面的
    .switchTo()方法
      dr.switchTo().frame("frame"); dr.findElement(By.id("div1")); dr.findElement(By.id("input1")); //此时,没有跳出frame,如果定位default content 中的元素也会报错。
      dr.findElement(By.id(
    "id1"));//报错 //跳出frame,进入default content;重新定位id="id1"的div
      dr.switchTo().defaultContent();
      dr.findElement(By.id(
    "id1"));
    }
    }

     四、alert confirm ,prompt对话框的定位

    <html>
     <head>
     <title>Alert</title>
     </head>
     <body>
     <input id = "alert" value = "alert" type = "button" onclick = "alert('欢迎!请按确认继续!');"/>
     <input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定吗?');"/>
     <input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的名字:','请输入你的名字'); document.write(name) "/>
     </body>
    </html>
    public static void main(String[] args) {
    
            WebDriver driver = new FirefoxDriver();
            String url = "file:///C:/Users/leixiaoj1/Desktop/test.html";
            driver.get(url);
            //点击第一个按钮,输出对话框上面的文字,然后叉掉
            driver.findElement(By.id("alert")).click();
            Alert alert = driver.switchTo().alert();
            String text = alert.getText();
            System.out.println(text);
            alert.dismiss();
            //点击第二个按钮,输出对话框上面的文字,然后点击确认
            driver.findElement(By.id("confirm")).click();
            Alert confirm = driver.switchTo().alert();
            String text1 = confirm.getText();
            System.out.println(text1);
            confirm.accept();
            //点击第三个按钮,输入你的名字,然后点击确认,最后
            
            driver.findElement(By.id("prompt")).click();
            Alert prompt = driver.switchTo().alert();
            String text2 = prompt.getText();
            System.out.println(text2);
            prompt.sendKeys("jarvi");//输入值
            prompt.accept();//保存
    }
                    

     五、定位下拉框:

    public class SelectsStudy {
    /**
    * @author*/
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.setProperty("webdriver.firefox.bin","D:\ProgramFiles\Mozilla Firefox\firefox.exe");
    WebDriver dr = new FirefoxDriver();
    dr.get("http://passport.51.com/reg2.5p");
    //通过下拉列表中选项的索引选中第二项,即2011 年 Select selectAge = new Select(dr.findElement(By.id("User_Age"))); selectAge.selectByIndex(2);
    //通过下拉列表中的选项的value 属性选中"上海"这一项 Select selectShen = new Select(dr.findElement(By.id("User_Shen"))); selectShen.selectByValue("上海");
    //通过下拉列表中选项的可见文本选 中"浦东"这一项 Select selectTown = new Select(dr.findElement(By.id("User_Town"))); selectTown.selectByVisibleText("浦东");
    //这里只是想遍历一下下拉列表所有选项,用click 进行选中选项 Select selectCity = new Select(dr.findElement(By.id("User_City"))); for(WebElement e : selectCity.getOptions()) e.click(); } }
    从上面可以看出,对下拉框进行操作时首先要定位到这个下拉框,new 一个Selcet 对象,然后对它进行操作。
  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/Lxiaojiang/p/6247805.html
Copyright © 2011-2022 走看看