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

1.find_element_by_id("value")

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

2.find_element_by_name("value")

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

3.find_element_by_class_name("value")

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

4.find_element_by_link_text("value')

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

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

  1. #! /usr/bin/env python
  2. #coding=utf-8
  3.  
  4. from selenium import webdriver
  5. import time
  6.  
  7. url = "http://www.baidu.com"
  8. driver = webdriver.Firef
  9. driver.get(url)
  10. driver.find_element_by_xpath(".//*[@id='kw']").send_keys("博客园")
  11. #driver.find_element_by_id("su").submit()
  12. time.sleep(5)
  13.  
  14. driver.find_element_by_id("kw").clear()
  15. time.sleep(5)
  16. #返回
  17. driver.back()
  18. time.sleep(5)
  1. #! /usr/bin/env python
  2. #coding=utf-8
  3.  
  4. from selenium import webdriver
  5. import time
  6.  
  7. url = "http://www.baidu.com"
  8. driver = webdriver.Firef
  9. driver.get(url)
  10. driver.find_element_by_xpath(".//*[@id='kw']").send_keys("博客园")
  11. #driver.find_element_by_id("su").submit()
  12. time.sleep(5)
  13.  
  14. driver.find_element_by_id("kw").clear()
  15. time.sleep(5)
  16. #返回
  17. driver.back()
  18. time.sleep(5)

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

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

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

  1. driver.get("http://www.baidu.com/gaoji/preferences.html")
  2. time.sleep(5)
  3. #driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()
  4. #除此之外还可以怎么定位?
  5. driver.find_element_by_xpath(".//option[@value='50']").click()
  6. 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. k8s调度-指定node

    1.给node加标签 kubectl label nodes k8s-slave2 slave= 2.查看标签 [root@k8s_master centos7]# kubectl describe ...

  2. 使用MongoDB 记录业务日志

    最近公司有个需求,要对业务日志进行记录并根据日志排查问题,以前都是使用log4net之类的日志组件来记录到文件,这种方式已经不能满足业务的需要,因为日志文件会很大,即使进行分割后,查找也是很不方便,何 ...

  3. flex hack 记录

    IE从IE10开始. //共通 display: flex; flex-direction: column; align-items: flex-start;justify-content: cent ...

  4. 九度OJ 1201:二叉排序树 (二叉树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4894 解决:2062 题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n(1< ...

  5. ElasticSearch(十八)初识分词器

    1.什么是分词器 作用:切分词语,normalization(提升recall召回率),如给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单词进行normalization(时态转换 ...

  6. PAT 1063. 计算谱半径(20)

    在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界.换言之,对于给定的n个复数空间的特征值{a1+b1i, ..., an+bni},它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模. ...

  7. node-sass 安装失败的解决措施[转]

    转自:http://blog.csdn.net/nzb329/article/details/51935236 在编译一个项目的时候,一直报错 后来发现是因为node-sass没有装成功, 最终的解决 ...

  8. JVM调优-工具篇

    原文地址 16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化.工具做为图形化界面来展示更能直观的发现问题,另一 ...

  9. matlab + c/c++ opencv 混合编程

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 辛苦原创所得,转载请注明出处 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

  10. python webserver客户端

    1.库 suds库,只能做webserver客户端,轻量化,使用方便.安装使用pip. 2.使用 如有webserver情况如下: url:http://10.110.35.41:8980/wsser ...