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 对象,然后对它进行操作。
  • 相关阅读:
    Nginx优化
    Mysql日常操作
    YUM源
    MySQL5.7安装手册
    自律——可以让我们活的更高级
    javascript中with的用法
    js中所有函数的参数(按值和按引用)都是按值传递的,怎么理解?
    base64编码的图片在网页中显示
    form表单提交没有跨域问题,但ajax提交存在跨域问题
    移动端1px的适配问题
  • 原文地址:https://www.cnblogs.com/Lxiaojiang/p/6247805.html
Copyright © 2011-2022 走看看