(一)  前言

Web应用以及包含超文本标记语言(HTML)、层叠样式表(CSS)、JS脚本的WEB页面,基于用户的操作(例如点击提交按钮),浏览器向WEB服务器发送请求,WEB服务器响应请求,返回给浏览器HTML及相关的JS、CSS、图片等资源,浏览器使用这些资源生成WEB页面,其中包含WEB各种视觉元素,例如文本框、按钮、标签、图标、复选框、下拉框、图片等,这些视觉元素或控件都被Selenium称为页面元素(webelements)。

想要让Selenium执行我们想要的操作,首先必须让Selenium识别需要操作的元素,就像人通过眼睛去识别一样,Selenium通过定位元素的方法去识别页面元素,可以通过ID、

name、class属性定位,以及Xpth和CSS选择器定位,或者直接通过文本进行定位。

(二)  使用谷歌检查页面元素(根据自己的使用习惯选择浏览器)

(1)   单击鼠标右键,选择“检查”。

(2)   需要使用Xpth或CSS选择器时,可以在Elements窗口,Ctrl+F打开搜索框,在搜索框中输入Xpth或CSS表达式,匹配的元素会高亮显示(黄色部分),如果有多个匹配,搜索框的右侧会显示匹配数量。

(三)  元素定位

就如人工操作时,输入查询条件,然后点击【查询】按钮,前提是首先要知道这个是搜索框,这个是【查询】按钮一样,Selenium在执行功能操作之前,也要先识别这些元素。下面是Selenium提供的8种find_element_by 方法,用于定位页面元素。
方法
简单说明
find_element_by_id()
通过页面元素的id来定位
find_element_by_name()
通过页面元素的name来定位
find_element_by_class_name()
通过页面元素的class名来定位
find_element_by_tag_name()
通过页面元素的tag name(标签名称)来定位
例如:find_element_by_tag_name('input')
find_element_by_xpath()
通过Xpth来定位
find_element_by_css_selector()
通过CSS选择器来定位
例如:find_element_by_css_selector('#zzk_q')
find_element_by_link_text()
通过元素标签对之间的文本来定位
例如:find_element_by_link_text('园子')
find_element_by_partial_link_text()
通过元素标签对之间的部分文本来定位
例如:find_element_by_partial_link_text('ET技术')
 

(1)   如果加s(find_elements_by),就是返回一个列表(一组元素),不加的话就是返回一个元素,如果找不到元素就会抛出NoSuchElementException异常。

(2)   也可以用find_element(By.ID,'')这种写法,使用这种方式要先导入By模块

from selenium.webdriver.common.by import By

(3)   要使用CSS选择器,可以参考jquery 语法关于选择器的那部分

http://www.runoob.com/jquery/jquery-selectors.html

注:另外比较特殊的是class属性,class属性有空格时,空格并不是一般认识中的空格符号,而是代表这个标签有多个class名,定位的时候使用第一个名称,或者不同名称之间用.分开就行了。

例如:淘宝首页这个标签<div class="promo J_Promo tb-loading"></div>,可以用div.promo 或 div.promo.J_Promo 或 div.promo.J_Promo.tb-loading 定位

Python+Selenium笔记(六):元素定位的更多相关文章

  1. python+selenium页面自动化 元素定位实际遇到的各种问题(持续更新)

    1.class属性有空格  (已验证) 当classname 中存在空格的时候,直接使用find_element_by_class_name时,会显示定位失败,此时,需要将classname中的空格替 ...

  2. Python selenium PO By.XPATH定位元素报错

    Python selenium PO  By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[tex ...

  3. Python3-Selenium自动化测试框架(二)之selenium使用和元素定位

    Selenium自动化测试框架(二)之selenium使用和元素定位 (一)selenium的简单使用 1.导包 from selenium import webdriver 2.初始化浏览器 # 驱 ...

  4. Python学习笔记六

    Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...

  5. selenium+java二元素定位

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...

  6. selenium自动化之元素定位方法

    在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...

  7. python+selenium笔记(一):元素定位方法

    一.环境准备: 1.浏览器选择:Firefox 2.安装插件:Firebug和FirePath(设置>附加组件>搜索:输入插件名称>下载安装后重启浏览器) 3.安装完成后,页面右上角 ...

  8. 【转】【selenium+Python WebDriver】之元素定位不到解决办法

    感谢: 煜妃的<Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)> ClassName定位报错问题:<[Python] ...

  9. 【转载】【selenium+Python WebDriver】之元素定位

    总结: 感谢: “煜妃”<Selenuim+Python之元素定位总结及实例说明> “Huilaojia123”<selenium WebDriver定位元素学习总结> “上海 ...

随机推荐

  1. Window服务与Quartz.NET

    Quartz.NET: http://quartznet.sourceforge.net/ (现为2.2版本) Sourceforge:http://sourceforge.net/projects/ ...

  2. 分享一套简单的CodeSmith三层模板

    如果要连接mysql,需要安装驱动: https://cdn.mysql.com//Downloads/Connector-Net/mysql-connector-net-8.0.12.msi 连接字 ...

  3. eclipse maven jdk全局设置

    <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</acti ...

  4. Jenkins-pipeline的实现步骤

    jenkins实现持续集成 搭建jenkins环境,安装插件 建立pipeline公用类库,文件夹vars,默认的 添加.groovy文件,可以由以下几个类库组成 dockerImageBuild 负 ...

  5. centOS 6.5上安装mysql5.7压缩版

    mysql-5.7.10-linux-glibc2.5-i686.tar.gz是目前最新版,二进制发布包,适合各种32为版本的发型版Linux,由于只有一个包,解压后配配就行,很方便,比较符合我的风格 ...

  6. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(三):搭建开发环境

    生成项目模板 登录Spring Initializr生成Spring Boot项目模板,保存到本地. 地址:https://start.spring.io/ 导入Maven项目 使用IDE导入生成的M ...

  7. 20-hadoop-pagerank的计算

    转: http://www.cnblogs.com/rubinorth/p/5799848.html 参考尚学堂视频 1, 概念( 来自百度百科) PageRank是Google专有的算法,用于衡量特 ...

  8. linux 初始化工作环境

    #!/bin/sh # # init workspace # /bin/svnserve -d -r /home/oracle/projects --listen-port= su - oracle ...

  9. 基于Hadoop2.6.5(HA)的Hive1.2.1的MySQL方式配置

    1.Hive配置MySQL Hive只是一个工具,无需配置多台机器,我在CentOS7One机器上配置Hive /usr/local/hive/apache-hive-1.2.1-bin/conf c ...

  10. Word文档中多个编号放同一行的方法(非技术)

    最近在帮公司出应届生校招面试题,为了方便,选择题部分的答案用了Word的[编号]功能!如下截图所示: 这么简短的四个答案这么竖着放很占空间(打印时也很浪纸张),能不能让它们全部横放在同一行,或两两一组 ...