• 0
  • 0
分享

selenium提供了很多用于定位元素的方法,首先我们自己需要知道元素有哪些属性,这就需要用到安装测试环境中firebug来定位

打开firefox浏览器,按下F12键,我们就可以看到如下图所示的界面:

1368146-20180517092352895-437491947.png

点击中间红框中的按钮再点击页面上的元素,就可以在下面页面代码处看到对应的属性,比如输入框有id、class、name、value还有个tag属性,除了value之外其他都可以作为定位该元素的方法。相关代码如下:

driver.find_element_by_id("kw").send_keys('python')
driver.find_element_by_class_name("s_ipt").send_keys('python')
driver.find_element_by_name("wd").send_keys('python')
driver.find_element_by_tag_name("input").send_keys('python')

当然,有些属性可能在一个web界面上有多个对应的值,这时候可以用find_elements_by_**来获取后,再根据位置来定位,比如tag为input的有3个,当前的需要的输入框在第二个,那么可以写成如下:

driver.find_elements_by_tag_name("input")[1].send_keys('python')

一般在定位一个元素的时候,会通过他在web界面唯一属性来定位。

当然定位元素的方法还有其他几种:

1、xpath方法,这个方法在比较固定的web界面中是比较实用的,比如百度输入框,可以通过下面来定位

driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')

xpath方法可以是完整路径,也可以是部分路径,一般根据实际情况来设置,后面会专门讲到 

2、css方法,这个方法是最快速的查找元素方法,可以根据不同条件来定位元素,比如百度输入框,可以通过下面的语句定位:

driver.find_element_by_css_selector('input.s_ipt').send_keys('python')

css定位手段灵活多变,后面会专门讲到

3、如果元素是个链接,我们可以通过link方法来定位,比如百度首页右上的一排元素,可以通过这种方式来定位,比如hao123网址:

driver.find_element_by_link_text('tj_trhao123').click

这些都需要经常的使用才能熟悉,不要急于求成。长时间不用自然也会忘掉


作者:水里的芋头

原文链接:https://www.cnblogs.com/watertaro/p/9049434.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 放眼全球,了解技术发展的边界和趋势,有助于组织和个人的发展及竞争力的提升,偶尔看到国外某网站的一篇文章,读来颇值得参考。也许这篇文章会给你一份指南,让你快速成长与发展。如今,随着世界数字化,我们目睹了技术进步的巨大变化。也将标志着技术和数字化转型的巨大变化,从而要求组织不断创新和重塑自我。1)敏捷与DevOps很多组织已采用了敏捷与DevOps,用敏捷来响应快速变化的需求,用DevOps来响应对速度的要求。DevOps涉及有助于集成开发和运维的活动(实践,规则,流程和工具),以减少从开发到运维的时间。对于正在寻找缩短软件生命周期,从开发到交付和运维方法的组织,DevOps已成为一种广泛接受的解...
            0 0 1371
            分享
          • 前言今年是笔者本科毕业的第6年,在接近三十而立的年龄里,回首自己从毕业到现在的职业生涯,可以说是一波三折。趁着自己现在有时间,就做一个复盘和总结,分享给曾经和我一样迷茫的朋友,希望能够带给你一些启发。一、考研失利,“捡到”一个国企的offer笔者是某末流211大学电子信息工程专业科班出身的,大四那年有些不知道“天高地厚”地拒绝了本校保研,准备跨考复旦大学的金融专业研究生,结果当然是华丽丽地当了一回“分母”。话说那时候考研还不是很卷,如果我坚持考自己专业,应该也是可以上岸一所不错的学校的,但是造化弄人.......于是乎,完美地错过了当时的秋招,只能急匆匆地追赶春招的步伐。地球人都知道春招无论是...
            11 11 1029
            分享
          • 前后端差点打起来事情是这样的:今天我们公司的后端说他接口写完了,并分享了一个接口文档给我。用的就是 Swagger UI 自动生成的那种接口文档,就像这种:这种 Swagger 文档我每次看着就头大,毛病多多:查看多级模型时要一级级点开在接口数量变多的时候非常难用,连分类菜单都没有提交参数为 JSON 的时候不能格式化参数出错的时候查找麻烦返回结果不能折叠,长得没法看时间比较紧急,我就按照他给的文档里的参数与响应数据,写到了我的前端页面上,前端这边简单自测了一下就匆匆上线了。上线完当晚就炸了。。页面上各种接口报错:参数不存在参数类型错误接口不存在(是因为接口写错了)老大马上过来找我俩,但是前后...
            4 4 825
            分享
          • Appium UI 自动化中显式等待和隐式等待的异同?在实际项目中是如何应用的?相同点都是智能等待,在一定时间范围内不断查找元素,一旦找到立刻结束查找继续执行代码,没找到才会一直找到超时为止不同点是隐式等待是全局性设置,并且可以随时更改,在更改后对之后的 findxxx 方法生效,对点击、输入、滑动之类的操作不起作用;显式等待仅仅针对单一元素生效,并且不仅仅是针对查找,也可以针对元素的某些属性进行自定义判断;很可能下一个问题就是你在测试过程中常用哪种等待?三种都有,相互结合根据各自不同特点应用不同的场景。大部分元素出现的时间可以用隐式等待统一设置特性元素出现时间较长,可以用显式等待针对他进行超...
            7 6 2210
            分享
          •   继猎豹移动CEO傅盛与金沙江创投董事总经理朱啸虎“互怼”后,朱啸虎又发了朋友圈解释了一番。  他表示,昨天的对话造成很多误解,其实我们应该是国内垂直AIGC真正出手最多的早期投资人(这句话在对话中被故意删掉了)。  其核心观点为不要迷信通用大模型,“明年3.5就成commodity,3年后4也将是commodity!对于大部分创业者,场景优先,数据为王!”朱啸虎称。作者:佚名原文链接:新浪科技_新浪网(sina.com.cn)
            0 0 1343
            分享
      • 51testing软件测试圈微信