selenium定位方法-(一)

1、定位页面元素的方式(By类的方法)

1)id定位:通过页面元素的id属性值来定位一个页面元素

      注意事项:如果每次刷新网页之后元素的id属性值都不同,说明是js动态生成的id属性值,不唯一不能作为定位方式

     // 向用户名文本框中输入yoki

    driver.findElement(By.id("username")).sendKeys("yoki");

    driver.find_element_by_id('username').sendKeys('yoki');

2)name定位:通过页面元素的name属性值来定位一个页面元素,如该属性不唯一不能作为定位方式

     // 向用户名文本框中输入yoki

    driver.findElement(By.name("username")).sendKeys("yoki");

    driver.find_element_by_name('username').sendKeys('yoki');

3)linkText定位:使用链接的全部文本来定位,只适用于链接的页面元素

      链接:标签名称为a的元素

      链接的全部文本:<a>和</a>之间的文本内容

     // 点击“查看详情”的链接

    driver.findElement(By.linkText("查看详情")).click();

    driver.find_element_by_link_Text('查看详情').click()

4)partialLinkText定位:使用链接的一部分关键文本来定位,只适用于链接的页面元素

      // 点击包含“您的资产有”文本的链接

    driver.findElement(By.partialLinkText("您的资产有")).click();

    driver.find_element_by_partial_link_Text('您的资产有').click()

5)className定位:使用Class属性的值来定位

      注意:网页源代码中查看class属性的值,而书写代码时使用的By类的className方法

      注意:不建议直接使用该方法定位,因为有可能定位到一组元素满足该特征,如该属性不唯一不能作为定位方式

      // 点击“搜索”按钮

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

     driver.find_element_by_class_name('go').click();

6)tagName定位:使用标签名称来定位页面元素

注意:不建议直接使用该方法定位,因为有可能定位到一组元素满足该特征,如该属性不唯一不能作为定位方式

// 输入留言yoki

   driver.findElement(By.tagName("textarea")).sendKeys("yoki");

driver.find_element_by_tag_name('textarea').sendKeys('yoki')

层级定位

1)先定位某个祖先元素,在祖先元素的范围内再进行二次定位到后代元素

2)// 点击"登录",

   driver.findElement(By.id("username")).findElement(By.tagName("img")).click();

driver.find_element_by_id('username').find_element_by_tag_name('img').click()

2、两个获得页面元素的方法

   1)findElement:获得满足参数条件的第一个元素

      // 向第一个input元素中输入yoki

    driver.findElement(By.tagName("input")).sendKeys("yoki");

    driver.find_element_by_tag_name('input').sendKeys('yoki')

   2)findElements:获得满足参数条件的所有元素,再次使用get方法来获得其中的第几个,编号从0开始

      // 向第二个input元素中输入yokil

    driver.findElements(By.tagName("input")).get(2).sendKeys("yokil");

    driver.find_element_by_tag_name('input').get(2).sendKeys('yoki')

												

最新文章

  1. js和jq添加新表格
  2. open office操作word文档
  3. codeforces 510B. Fox And Two Dots 解题报告
  4. c#部分---好题--顺便练练“类的知识”
  5. Codeforces Round #125 (Div. 2)
  6. 使用ReflectionTestUtils解决依赖注入
  7. OpenWRT加入 crontab开机默认运行
  8. ubuntu制作usb启动盘
  9. 《asp.net mvc3 高级编程》第二章 控制器
  10. 文成小盆友python-num11-(2) python操作Memcache Redis
  11. 盒子游戏(The Seventh Hunan Collegiate Programming Contest)
  12. perties类的操作
  13. setTimeout异步加载
  14. fitnesse - Variables and Symbols
  15. Linux中git的使用
  16. 单例模式详解及java常用类
  17. 年轻的工程师如何月入伍万XD
  18. Spring框架IOC和AOP的实现原理(概念)
  19. PYthon第十二天
  20. Layui 获取 radio的值

热门文章

  1. Zabbix添加监控主机
  2. 朝阳大妈也能听懂的git教程 (好人不谢)
  3. 渲染导航菜单的同时给每个菜单绑定不同的router跳转
  4. Django坑_01
  5. day4. 运算符
  6. 【CF115E】Linear Kingdom Races 题解(线段树优化DP)
  7. 04-Thread的生命周期
  8. 物联网实验Arduino(1)
  9. synchronized 锁的原理
  10. 023_go语言中的通道