元素定位

Selenium需要告知其如何去定位元素,来模拟用户动作。例如要操作Bing搜索页。

  • 首先要找到搜索框与搜索按钮;
  • 通过键盘输入检索的关键字;
  • 用鼠标单击搜索按钮;
  • 提交搜索请求。

    Selenium能够模拟上面描述的动作,但Selenium并不理解如何在搜索框中输入关键字或单击搜索按钮的操作。Selenium需要代码告诉其如何定位搜索框或搜索按钮,从而实现模拟人工的操作。

    Selenium提供了多种方法用于定位元素(find_element_by_),其中号代表可变的方法,例如id、name等。

    Selenium提供了8种find_element_by_方法用于定位元素。本节我们会分别介绍这些方法,8种find_element_by_方法如下表所示。
  • find_element_by_id:通过元素的ID属性值来定位元素;
  • find_element_by_name:通过元素的name属性值来定位元素;
  • find_element_by_class_name:通过元素的class属性值来定位元素;
  • find_element_by_xpath:通过Xpath来定位元素;
  • find_element_by_tag_name:通过元素的tag name来定位元素;
  • find_element_by_css_selector:通过CSS选择器来定位元素;
  • find_element_by_link_text:通过元素标签对之间的文本信息来定位元素;
  • find_element_by_partial_link_text:通过元素标签对之间的部分文本信息来定位元素;

ID定位

id(find_element_by_id)是Selenium中较常用的定位方式,因为一般不会存在id重名的元素。

目前大部分技术研发团队的开发方式,都采用的是前后端分离的技术。很多团队在前端代码提交后,在审核代码时,都会检查元素的属性定义,其中id的唯一就是检查的一项。因此find_element_by_id方法是查找页面上元素的最佳方法。

搜索框元素的属性描述HTML代码如下:

<input class="b_searchbox" id="sb_form_q" name="q" title="输入搜索词" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">

因此id=“sb_form_q”的定位方法就是find_element_by_id(“sb_form_q”),如图所示。



Selenium通过FireFox浏览器驱动操作输入框的代码如下:

from selenium import webdriver

driver=webdriver.Firefox()

driver.get("https://cn.bing.com/")
driver. find_element_by_id("sb_form_q").send_keys("bella")
driver.quit() # 关闭浏览器

打开PyCharm编译器,创建1个工程,且在该工程下创建一个.py文件(py文件名自己命名即可,如Demo.py),然后将如上代码敲入到创建的py文件中,如图所示。



右键单击选择Run 即可(如 Run ‘Demo’)运行代码,观察到如下操做。

  • 打开FireFox浏览器;
  • 打开Bing首页;
  • 键入Bella;
  • 关闭浏览器。

《全栈测试系列视频》课程

地址:https://ke.qq.com/course/2525707?tuin=9c43f38e

《测试体系》其它课程

地址:https://51test.ke.qq.com/?tuin=9c43f38e

图书京东、当当有售

京东:https://item.jd.com/12784287.html

当当:http://product.dangdang.com/29177828.html)

Selenium3自动化测试【14】元素定位之ID的更多相关文章

  1. Web UI自动化测试基础——元素定位(三)

    本篇文章整理了元素定位的基础知识——iframe框架中的元素定位. 一.iframe框架元素定位 iframe是Html页面的内联框架,如果在自动化测试中无法定位到某个元素,那么很有可能是因为该元素在 ...

  2. web自动化测试(java)---元素定位

    和python类似,java-selenium也提供了很多种元素定位的方法,具体如下: findElement(By.id()) findElement(By.name()) findElement( ...

  3. Web UI自动化测试基础——元素定位(二)

    本篇文章整理了元素定位的基础知识——多个元素定位方式. 一.多个元素定位方式简介 同单个元素定位方式相同,多个元素定位方式也有与之对应的8种方式,即id.name.class_name.tag_nam ...

  4. Web UI自动化测试基础——元素定位(一)

    本篇文章整理了元素定位的基础知识——单个元素定位方式. 一.单个元素定位方式简介 1. find_element_by_id 通过元素的id属性进行定位.以百度首页为例,首先进入https://www ...

  5. python3+selenium3自动化1——元素定位

    1.selenium的webdriver提供了八种基本的元素定位方法 打开浏览器 driver = webdriver.Chrome() driver.get('https://www.baidu.c ...

  6. robotframework使用之元素定位动态ID方法

    转自: http://blog.csdn.net/u011757108/article/details/53418671 一个弹出框所有元素ID竟然的动态的,关闭后再打开,里面的ID又变! 如下图:  ...

  7. 搭建Python自动化测试环境+元素定位

    https://blog.csdn.net/GitChat/article/details/79081187

  8. 3 Python+Selenium的元素定位方法(id、class name、name、tag name)

    [环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:fin ...

  9. python+Appium自动化:id元素定位

    元素定位 与web自动化一样,app自动化元素定位也是非常重要的一环,,appium也是提供了很多元素定位的方法,比如:id.name.class.层级定位等等. 元素定位方式 id name cla ...

随机推荐

  1. [CentOS7]Windows下VirtualBox虚拟机磁盘扩容

    目录 虚拟系统磁盘文件扩充 修改分区 LVM更新 扩容文件系统 参考资料 虚拟系统磁盘文件扩充 命令操作 命令行运行VBoxManage,modifyhd扩容需要文件格式为.vdi,如为.vmdk,需 ...

  2. 单细胞分析实录(9): 展示marker基因的4种图形(二)

    在上一篇中,我已经讲解了展示marker基因的前两种图形,分别是tsne/umap图.热图,感兴趣的读者可以回顾一下.这一节我们继续学习堆叠小提琴图和气泡图. 3. 堆叠小提琴图展示marker基因 ...

  3. 医学图像配准 | Voxelmorph 微分同胚 | MICCAI2019

    文章转载:微信公众号「机器学习炼丹术」 作者:炼丹兄(已授权) 联系方式:微信cyx645016617(欢迎交流) 论文题目:'Unsupervised Learning for Fast Proba ...

  4. .net 程序员的centos命令总结

    1,ssh相关 在初始化一台云服务器的时候,第一件事情就是去把该关的门都关上,首先第一关就是禁用root登录,禁用密码登录,顺便改一下远程登录端口,让登录都通过ssh密钥对来进行,阿里云里有密钥对管理 ...

  5. Java中HashMap的源码分析

    先来回顾一下Map类中常用实现类的区别: HashMap:底层实现是哈希表+链表,在JDK8中,当链表长度大于8时转换为红黑树,线程不安全,效率高,允许key或value为null HashTable ...

  6. 《C++反汇编与逆向分析技术揭秘》--算术运算和赋值

    一.加法 1.Debug下: 14: int nVarOne0 = 1 + 5 - 3 * 6;//编译时计算得到结果 00C0550E C7 45 F8 F4 FF FF FF mov dword ...

  7. C++单重继承分析

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  8. Spring笔记(四)

    Spring JdbcTemplate 一.JdbcTemplate概念及使用 1. 什么是JdbcTemplate: Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库 ...

  9. 【wp】2021MAR-DASCTF_逆向

    昨天打完的MAR DASCTF,来复个盘~ 不过就re做了3/4然后有事提前开溜了hhh,拿了drinkSomeTea和replace的三血心满意足(蜜汁三血执念. 感觉这回的出题人好喜欢TEA啊(正 ...

  10. vue自定义插件封装,实现简易的elementUi的Message和MessageBox

    vue自定义插件封装示例 1.实现message插件封装(类似简易版的elementUi的message) message组件 <template>     <transition  ...