#识别元素并操作
#一般有如下几种方法,其中id最为常用.这里需要注意识别元素一定要用唯一id

1.find_element_by_id("value")

#! /usr/bin/env python
#coding=utf-8 from selenium import webdriver
import time url = "http://www.baidu.com"
driver = webdriver.Firefox()
driver.get(url)
time.sleep(5) driver.find_element_by_id("kw").send_keys("博客园")
#模拟表单的提交按钮操作,新版百度搜索不需要这个了,他会自动搜索,再次看出ui的维护成本很高
#driver.find_element_by_id("kw").submit()

2.find_element_by_name("value")

#driver.find_element_by_name("wd").send_keys("博客园")

3.find_element_by_class_name("value")

#driver.find_element_by_class_name("s_ipt").send_keys("博客园")

4.find_element_by_link_text("value')

driver.get(url)
driver.find_element_by_link_text("新闻").click()
time.sleep(5) #对于超级连接比较长的可以尝试采用下面的方法,类似一种模糊匹配
driver.find_element_by_partial_link_text("首页").click()
time.sleep(5)

5.#xpath神器,理论上来说,没有path定位不到的元素
#这里使用firepath查看
#xpath你理解为树形结构就OK,我们也可以通过类似上下级的关系来一层层定位

#! /usr/bin/env python
#coding=utf-8 from selenium import webdriver
import time url = "http://www.baidu.com"
driver = webdriver.Firef
driver.get(url)
driver.find_element_by_xpath(".//*[@id='kw']").send_keys("博客园")
#driver.find_element_by_id("su").submit()
time.sleep(5) driver.find_element_by_id("kw").clear()
time.sleep(5)
#返回
driver.back()
time.sleep(5)
#! /usr/bin/env python
#coding=utf-8 from selenium import webdriver
import time url = "http://www.baidu.com"
driver = webdriver.Firef
driver.get(url)
driver.find_element_by_xpath(".//*[@id='kw']").send_keys("博客园")
#driver.find_element_by_id("su").submit()
time.sleep(5) driver.find_element_by_id("kw").clear()
time.sleep(5)
#返回
driver.back()
time.sleep(5)

6.利用两个元素属性进行唯一定位 and or,只适用于xpath

driver.find_element_by_xpath(".//*[@id='kw' and @name='wd']").send_keys("博客园")
time.sleep(5)

7.#当父类有多个一样的子类的时候,可以通过下标来定位,从1开始
#以搜索设置里的结果显示条数为例

driver.get("http://www.baidu.com/gaoji/preferences.html")
time.sleep(5)
#driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()
#除此之外还可以怎么定位?
driver.find_element_by_xpath(".//option[@value='50']").click()
time.sleep(5)

举例:

解释:

#通过id='nr'值的select元素,找到第三个input子元素
#driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()

#通过属性名为value且值为50的第三个option元素
driver.find_element_by_xpath(".//option[@value='50']").click()

Selenium-几种元素定位方式的更多相关文章

  1. 【python+selenium的web自动化】- 8种元素定位方式详解

    ​ 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定位方式进行总结归纳. ​ 说明:以下操作统 ...

  2. Java + Selenium + WebDriver八大元素定位方式

    UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...

  3. 1、selenium 8大元素定位方式

    元素定位方式: id name css class_name tag_name partial_link link_text : driver. find_element_by_link_text(& ...

  4. Selenium系列(一) - 8种元素定位方式的详细解读

    安装Selenium和下载Driver 安装selenium pip3 install  selenium -i http://pypi.douban.com/simple --trusted-hos ...

  5. Selenium 八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  6. Selenium八种元素定位方法源码阅读

    接触过Selenium的都知道元素定位有八种方法,但用不同的方法在执行时有什么区别呢? 元素定位8种方法(Python版),当然还有每一个方法对应的find_elements方法 find_eleme ...

  7. Appium常用的3种元素定位方式

    以最右App为例 .apk文件网盘地址: 链接:https://pan.baidu.com/s/1L4MYkhpb5ECe8XeaneTx_Q 提取码:0jqm 1.find_element_by_i ...

  8. Selenium八种基本定位方式---基于python

    from selenium import  webdriver driver=webdriver.Firefox() driver.get("https://www.baidu.com&qu ...

  9. Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)

    此 文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,通过 ID.name.xpath.cssSelector.linkText.className.partialLinkTe ...

随机推荐

  1. iOS开发之 AES+Base64数据混合加密与解密

    2016-04-08 09:03 编辑: liubinqww 分类:iOS开发 来源:liubinqww 投稿 4 889     "APP的数据安全已经牵动着我们开发者的心,简单的MD5/ ...

  2. 修改Linux字符集

    1.查看操作系统中安装的locale信息 ls /usr/lib/locale 2.创建.i18n文件 在用户目录下创建.i18n文件,并添加如下内容: LANG="zh_CN.utf8&q ...

  3. 13 Memcached 永久数据被踢现象

    一:Memcached 永久数据被踢现象(1)网上有人反映"memcached"数据丢失,明明设为永久不失效,却莫名其妙的丢失了. 其实这要从2个方面来找原因. 即使前面介绍的惰性 ...

  4. git add -A使用说明

    git help add -A, --all            Like -u, but match <filepattern> against files in the workin ...

  5. 探究css中各种情况下的元素的垂直和水平居中的问题(面试题)

    今天各种纠结,真的是不想写东西(ps 我比较懒)但是老是有人问这个问题,于是我就本着分享精神还是整理一下,好了废话不多说 开始上代码 问题:外边是一个容器,容器中还有一个容器,那么请问怎么让里边的容器 ...

  6. python第三方库地址

    python第三方库的地址: requests: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html beautifus ...

  7. Java static关键字特点

    一.特点 1.随着类的加载而加载2.优先于对象存在3.被类的所有对象共享4.可以通过类名调用 二.调用特征 静态方法: 成员变量:只能访问静态变量 成员方法:只能访问静态成员方法 非静态方法: 成员变 ...

  8. LNMP环境搭建(三:PHP)

    1.获取php源码 # cd /usr/local/src/ # wget http://cn2.php.net/get/php-7.0.15.tar.gz/from/this/mirror 2.解压 ...

  9. 通过eclipse.ini修改Eclipse加载jdk的路径

    这里直接把在网上的找到的答案记录下来,原文地址:http://www.oschina.net/question/109676_15561: 如果出现 启动 Eclipse 弹出“Failed to l ...

  10. EasyDSS流媒体服务器灵活地帮助用户实现摄像机RTSP转RTMP直播功能

    简要描述 今天突然接到国内某上市公司同事打来的技术咨询电话,经过简单的沟通,大概所描述的需求是: 1.目前现场有非常多的摄像机资源需要接入: 2.需要将摄像机的RTSP流转成RTMP流接入到微信小程序 ...