软件测试培训

亿元级外企Java培训企业

  • 全国服务监督电话400-111-8989
软件测试培训 > 软件测试教程 > 定位页面元素--Selenium自动化(六)
  • 定位页面元素--Selenium自动化(六)

    发布:软件测试培训  来源:软件测试教程  时间: 2016年08月08日

  • 在定位单个元素时,selenium-webdriver 提示了如下一些方法对元素进行定位。下面这些定位方式中,优先使用id、name、classname,对于网上的链接元素,推荐使用linkText定位方式,对于不好定位的元素,考虑使用火狐的插件去辅助定位(xpath)。...

  • Selenium-Webdriver提供了强大的元素定位方法,支持以下三种方法。

    n 单个对象的定位方法

    n 多个对象的定位方法

    n 层级定位

    1. 定位单个元素

    在定位单个元素时,selenium-webdriver 提示了如下一些方法对元素进行定位。下面这些定位方式中,优先使用id、name、classname,对于网上的链接元素,推荐使用linkText定位方式,对于不好定位的元素,考虑使用火狐的插件去辅助定位(xpath)。

    By.className(className)) //对于元素的属性包含class的情况适用

    By.cssSelector(selector) //通用定位方式,对于不好定位的元素适用

    By.id(id) //对于元素的属性包含id的情况适用,推荐使用

    By.linkText(linkText) //适用于链接类的元素,即标签,包含herf属性的元素

    By.name(name) //对于元素的属性包含name的情况适用

    By.partialLinkText(linkText) //适用于链接类的元素,模糊匹配,即包含herf属性的元素

    By.tagName(name) //通用定位方式,适用于层级定位

    By.xpath(xpathExpression) //通用定位方式,对于不好定位的元素适用,兼容性存在问题

    注意:selenium-webdriver 通过findElement()、findElements()等find 方法调用"By"对象来定位和查询元素。By 类只是提供查询的方式进行分类。findElement 返回一个元素对象否则抛出异常,findElements 返回符合条件的元素List,如果不存在符合条件的就返回一个空的list。

    小技巧(处理复合classname的方法)

    classname

    上述元素的class为bg s_btn,中间有空格的即为复合型class,此时直接按By.className("bg s_btn"),则会报错Compound class names are not supported. Consider searching for one class name and filtering the results or use CSS selectors.

    处理方法为只选择class属性中的一个值,下面的代码就不会报错了

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

    2. 定位多个元素

    findElements()方法可以返回一个符合条件的元素List组

    这是一个定位多个元素并从中选择一个成员进行操作的例子

    //定义了一个集合,将name一样的元素一次性定位出来

    List elements = driver .findElements(By.name("flag"));

    //通过集合的下标进行操作,集合的第一位下标是0,参数index就是下标

    elements.get(index).click();

    3. 层级定位

    层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。

    表格应用

    //得到table元素对象

    WebElement table = driver.findElement(by);

    //得到table表中所有行对象,并得到所要查询的行对象。

    List rows = table.findElements(By.tagName("tr"));

    下拉列表应用

    //读取下拉列表中选项的个数

    WebElement a = driver.findElement(By.id("areaID")); //定位下拉列表

    List aa = a.findElements(By.tagName("option")); //从下拉列表中查找所有的选项

  • 上一篇:操作浏览器--Selenium自动化(五)

    下一篇:页面元素操作之一--Selenium自动化(七)

网站导航
2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56