Firefox浏览器作为selenium的默认浏览器不是没有道理的,其强大的元素定位能力,能快速有助于开发人员对于关键字的获取。而自动化需要掌握的关键步骤有:获取元素,操作元素,获取返回结果,断言(判断返回结果是否与期望结果一致),生成测试报告。

一、准备环境

  1. 安装Firebug和FirePath,在浏览器设置/添加组件/搜索插件名称
  2. 安装完成浏览器右上角有个爬虫的图标

二、查看页面元素

  1. 点击浏览器右上角爬虫图标
  2. 点击左下角箭头标识
  3. 将箭头标识移动到百度搜索框,输入框高亮
  4. 下方红色区域就是单位到输入框的属性

三、元素定位

从上图中可以得到相应搜索单元的属性,利用单元中元素的属性进行定位

  1. find_element_by_id()

可以看到属性 id ,id ="search-key",通过id属性定位到这个元素,定位到搜索框后,使用send_keys()

#coding:utf-8
from selenium import webdriverdriver = webdriver.Firefox()
driver.get("https://www.baidu.com/")#通过id定位搜索框,并输出selenium
driver.find_element_by_id("kw").send_keys("selenium")
driver.find_element_by_id("su").submit()driver.implicitly_wait(10)
driver.quit()

2. find_element_by_name()

可以看到属性name,name="q",通过name属性定位到这个元素

driver.find_element_by_name("q").send_keys("selenium")

但是发现运行结果存在问题,因为name属性不是唯一的,因此无法通过name属性定位到搜索框

3. find_element_by_class_name()

可以看到属性class="engine-key",通过class属性定位到这个元素

driver.find_element_by_class_name("engine-key").send_keys("selenium")

出现的问题同2中一样,以为class_name属性不具有唯一性,不能直接定位

4. find_element_by_tag_name()

每个元素都有一个tag标签,如搜索框的tag标签是最前面的input属性,从上图也不难发现,一个页面中有很多tag标签,因此一般不用tag标签进行定位

driver.find_element_by_tag_name("input").send_keys("selenium")

5. find_element_by_link_text()

定位百度首页上的hao123

有一个href="http://www.hao123.com"的元素,这是一种超链接的表示方法,对于这种元素

#coding:utf-8
from selenium import webdriverdriver = webdriver.Firefox()
driver.get("https://www.baidu.com/")#通过超链接定位搜索框,并输出selenium
driver.find_element_by_link_text("hao123").click()

有时间,超链接可能很长,此时可以是用模糊定位,只需要输出部分字符串就可以了,可以使用

find_element_by_partial_link_text() 进行定位,如果要定位hao123,可以使用o123,但要确保字符在界面中的唯一性

driver.find_element_by_partial_link_text("o123").click()

6. find_element_by_xpath()

从上面可以看到,在元素定位的时候,难免有重复的,不能保证唯一性,因此除了id,name,tag,class,超链接等属性定位方法,作为最重要的元素定位方法之一的xpath方法进行定位,xpath是一种路径语言

这样就得到了搜索框的xpath路径,复制XPath中的路径进行搜索。

#coding:utf-8
from selenium import webdriver
import time#打开火狐浏览器
driver = webdriver.Firefox()
driver.maximize_window()
#打开百度
driver.get("https://www.baidu.com/")
#页面加载需要几秒钟的时间
time.sleep(2)
driver.find_element_by_xpath(".//*[@id='kw']").send_keys("python")
driver.find_element_by_xpath(".//*[@id='su']").click()
time.sleep(3)driver.quit()

7. find_element_by_css_selector()

css是另一种语法,比xpath更简洁,那如何进行查看呢

#coding:utf-8
from selenium import webdriver
import time#打开火狐浏览器
driver = webdriver.Firefox()
driver.maximize_window()
#打开百度
driver.get("https://www.baidu.com/")
#页面加载需要几秒钟的时间
time.sleep(2)
driver.find_element_by_css_selector("#kw").send_keys("python")
driver.find_element_by_css_selector("#su").click()
time.sleep(3)driver.quit()

selenium2与python自动化2-元素定位相关推荐

  1. selenium2与python自动化4-css元素定位

    前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁. 这一篇cs ...

  2. Python+selenium自动化八大元素定位方法及实例(超详细)

    目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...

  3. appium自动化,appium元素定位

    appium自动化,appium元素定位 Appium是一款综合性软件,可让您在本地.移动或混合应用程序上执行复杂的测试. 简而言之,appium自动化框架允许您在不需要 SDK 或在每次测试会话后重 ...

  4. 三、Appium-python-UI自动化之元素定位uiautomatorviewer

    uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,可以检查一个应用的UI来查看应用的布局和组件以及相关的属性. 一 ...

  5. UI自动化之元素定位(xpath、css)

    很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...

  6. python+appium自动化测试元素定位

    关于app自动化测试,元素定位工具有三个: appium自带的Appium Inspector工具 Android ADT原生的工具 python版uiautomator2中的weditor 由于我常 ...

  7. Web UI自动化测试之元素定位

    目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...

  8. python自动化 2 对象定位(1)

    这是一篇个人学习笔记 在wed自动化测试过程中,我们对网站的操作是都是建立在各个对象上的,因此元素定位就变得非常重要. 一.常用元素定位方法 二.id & name 定位 id定位: #cod ...

  9. UI自动化测试之元素定位方法

    Python语言Selenium库UI自动化测试(一)元素定位方法 简介 当我们日常搭建自动化测试框架时,用Python调用浏览器时,通常有Requests库.Selenium库 这两个库是进行爬虫或 ...

最新文章

  1. 快速排序之Java实现
  2. angularjs 1.x $q模块使用
  3. mysql语句orderby_mysql中的orderby_MySQL
  4. 深度神经网络的反向传播算法数学推导
  5. Android--多个Activity共享Socket--单例模式
  6. Docker小白到实战之Dockerfile解析及实战演示,果然顺手
  7. 与传统的计算机硬件系统相比,计算机一级名词解释
  8. 掌握MySQL数据库这些优化技巧,事半功倍!
  9. mysql数据库密码为空_注意MySQL 数据库用户root密码为空_MySQL
  10. 解决XP的IIS HTTP 500”内部服务器错误
  11. GJB150A-2009军用装备实验室环境试验标准目录
  12. web开发-引用Google font library-学习笔记四
  13. 在线计算机带竖式,竖式计算器Scalar v4.2 采用竖式计算
  14. 2018人工智能发展盘点:国内各行业拥抱AI,总体呈现八大特点
  15. 深度学习用于图像/视频增强的损失函数(loss)及评价指标
  16. Visual Studio使用教程
  17. openbsd_仔细看一下OpenBSD
  18. 物料-贴片电容-标签识别
  19. 巨头卡位物联网 纷纷瞄准家庭网关设备
  20. 如何自己烧制全文RSS(打造自己RSS源)

热门文章

  1. 【UOJ34】—多项式乘法(FFT)
  2. 对PostgreSQL中 index only scan 的初步理解
  3. 一步一步asp.net_页面静态化管理
  4. [Buzz.Today]HP停止 webOS 设备的研发和运作
  5. Win API函数SetWindowOrgEx与SetViewportOrgEx
  6. 蓝牙HCI剖析(二)
  7. jieba分词实现原理(C++版 + python篇)(二)
  8. 排序 (5)桶排序“概念”
  9. (chap4 IP协议) 路由控制表(Routing Table)
  10. C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值