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

    Selenium webdriver是完全模拟用户在对浏览器进行操作,所有用户都是在页面进行的单击、双击、输入、滚动等操作,而webdriver也是一样,所以需要我们指定元素让webdriver进行单击、双击、输入等操作,所以元素定位是UI自动化测试的前提条件。可以联想到之前说的页面经常变动的项目为什么不适合进行UI自动化测试,如果元素一直在变动,你就要不停的修改代码,维护工作量太大,投入产出比就太低了。

    Selenium提供了8种定位方式:

    l Id

    l Name

    l Tag name

    l Xpath

    l Css

    l Link text

    l Partial Link text

    l Class name

    定位的基本语法为:

    WebDriver driver =new FirefoxDriver();

    driver.findElement(By.id("id"));

    driver.findElement(By.name("name"));

    driver.findElement(By.className("className"));

    driver.findElement(By.linkText("链接全部文字"));

    driver.findElement(By.partialLinkText("链接的部分文字"));

    driver.findElement(By.xpath("xpath定位表达式"));

    driver.findElement(By.cssSelector("CSS表达式"));

    driver.findElement(By.tagName("标签名"));

    Id定位相对准确些,因为在页面id一般是唯一的标识符,name可能定位到的元素不只有单个元素,可能不唯一,导致不能准确的定位元素,脚本出现报错。

    举例说明(以百度首页为例):

    WebDriver driver =new FirefoxDriver();

    driver.navigate().to("https://www.baidu.com/"); //输入URL,进入百度主页

    driver.manage().window().maximize();  //窗口最大化

    driver.findElement(By.id("kw")).sendKeys("selenium");  //使用id定位,在百度输入框中输入selenium关键词

    driver.findElement(By.xpath("//input[@id='su']")).click();  //使用xpath定位,单击提交按钮

    主要说下xpath定位:

    1.使用绝对路径定位:

    例如:html/body/div/div/div/div/div/form/input[@id=’kw’];

    2.使用相对路径定位:

    例如://input[@id=’kw’];

    其中//“表示在所有层级中进行查找,建议使用相对路径进行定位,因为相对路径相对的简洁些,不管页面发生一下什么变化,只要id值为kwinput元素还在就可以定位到,这样可以降低代码维护成本。

    3.使用索引号进行定位:

    //input[2]   表示xpath在定位查找元素时,选择第二个tagnameinput的元素即为所需元素,遇到页面HTML层级比较复杂的页面不建议使用索引号定位。

    4.使用页面元素的属性值来定位:

    //img[@alt=’div1-img1’];       xpath定位的是alt属性值为div1-img1的图片元素,北侧网页的元素通常会包含各种各样的属性值,并且很多的属性值是唯一的,强烈建议使用相对路径结合属性值的定方式来定位,这种准确率相对较高。

    预期定位的页面元素

    定位表达式

    使用的属性值

    定位页面的一张图片

    //img[@href=’http://www.sogou.com’]

    使用imghref属性

    定位第2div中的第一个输入框

    //div[2]/input[@name=’kw’]

    使用inputname属性

    定位第1div中的第一个链接

    //div[@name=’div2’]/a[@href=’http://www.sogou.com’]

    使用ahref属性

    定位页面的查询按钮

    //input[@type=’button’]

    使用inputtype属性

    5.使用页面元素的文本定位:

    //a[text()=’百度搜索’]   定位文本为”百度搜索“的链接

    //a[contains(text(),’百度’)]   定位文本包含”百度“字样的链接

    6.CSS定位

    7.JQuery定位

     

     

    页面元素的定位是在整个自动化测试中都需要用到的技能,也是最繁琐的,因为你要去不断的试错,不断的运行脚本去检查自己的元素定位是否有效,这个占了整个测试很大一部分时间。

  • 相关阅读:
    Android学习——体验活动的生命周期
    Android学习——活动的生存期
    《程序员修炼之道:从小工到专家》 阅读笔记01
    开课第七周周总结
    Android学习——活动状态
    Android学习——返回栈
    Android学习——Intent传递数据
    Android学习——隐式Activity的用法
    Android学习——隐式Activity
    Android学习——使用显示Intent
  • 原文地址:https://www.cnblogs.com/redick/p/6256893.html
Copyright © 2011-2022 走看看