zoukankan      html  css  js  c++  java
  • selenium的8种定位方式(java举例)

    已经存在webdriver实例化的对象

     WebDriver driver=new FirefoxDriver();

    1. By.name()

    通过元素的name属性查找,但是如果元素较多的话,定位困难,尤其存在多个相同的name属性的时候

     dr.findElement(By.name("name")).clear();

    2.By.id()

    通过元素的id属性命名,一般来说id比name精确,一般来说一个页面内id值都不会同名

    dr.findElement(By.id("password")).sendKeys(pwd);

    3.By.className()

    通过元素的类名查找,一般页面中,多个元素都可能属于同一个class类,也有一个元素属于多个class类的情况,使用不是很多

    4.By.tagName()

    通过元素的标签名查找,一般用的少,一般一个页面有多个<a>标签、<input>标签,一般会查找个多个元素,但是可以通过list 去接收,然后循环foreach循环找到需要的元素,如下

     public void ce() {
          dr=new FirefoxDriver();
          dr.get("http://crm.cloud.5kcrm.com/");
          WebElement tg1 = null;
          List<WebElement>  tagnames= dr.findElements(By.tagName("input"));
          for (WebElement tg:tagnames){
              if(tg.getAttribute("name").equals("password")){
                  tg1=tg;
                  break;
              }
          }
          System.out.println(tg1.getTagName().toString());
             
      }

    5. By.linkText()

    通过<a>标签链接的内容进行查找

    如html中

    <a>组织架构</a>

    那么这样写

      dr.findElement(By.linkText("组织架构")).click(); 

    6. By.partialLinkText()

    是linktest进一部的简化使用,<a>标签内容的局部匹配

    如html中

    <a>组织架构</a>

    那么这样写

      dr.findElement(By.partiallinkText("组织")).click(); 

    7. By.xpath()

    强大的匹配工具,主要通过位置来匹配,有相对位置和绝对位置,如下:

     dr.findElement(By.xpath(".//*[@id='popOverBox']/input[2]")).click();//相对位置
    dr.findElement(By.xpath(
    "html/body/div[9]/div[2]/form/div[1]/div/input")).sendKeys("测试部门");//绝对位置

    (1)匹配属性

    dr.findElement(By.xpath(“//a[contains(@href, 'ces')]”));//href中包含'ces'的a的标签

    (2)匹配字符

    dr.findElement(By.xpath("//a[contains(text(),'办')]"));//匹配a标签中包含“办”的文字如<a>办公室</a>

    (3)匹配兄弟元素、父元素等等

    可以参照w3school中的轴的使用

    8. By.cssSelector()

    通过css的选择器进行元素的查找

    html中的css选择器使用方式如下

    ID选择器:
    
      #idName{}样式唯一;
    
    类选择器:
    
      .className{}样式共用;
    
    标签选择器
    
      html自带的标签;
    
    
    优先级:ID>类>标签选择器
    
     .name a{}   
    
        name类下的a标签进行样式修改
    
      a,p{}
    
        a、p两种标签样式同时修改

     但是cssSelector中的递进关系是用【>】进行的,css选择器择是用空格进行的递进关系

    dr.findElement(By.cssSelector(".controls>textarea[name='description']")).sendKeys("测试测试");
    //这里.controls表示class名为controls;textarea表示标签名,name表示textarea中的属性名
  • 相关阅读:
    BZOJ2337 [HNOI2011]XOR和路径
    「学习笔记」3.31代码学习
    uva live 12846 A Daisy Puzzle Game
    Cannot use ImageField because Pillow is not installed
    Android点击Button水波纹效果
    hdu 1241 Oil Deposits
    c++ 字符输入读取
    clutter recoder
    C/C++获取数组长度
    vector array and normal stanard array
  • 原文地址:https://www.cnblogs.com/ceshixuexi/p/7250416.html
Copyright © 2011-2022 走看看