selenium2与python自动化2-元素定位
Firefox浏览器作为selenium的默认浏览器不是没有道理的,其强大的元素定位能力,能快速有助于开发人员对于关键字的获取。而自动化需要掌握的关键步骤有:获取元素,操作元素,获取返回结果,断言(判断返回结果是否与期望结果一致),生成测试报告。
一、准备环境
- 安装Firebug和FirePath,在浏览器设置/添加组件/搜索插件名称
- 安装完成浏览器右上角有个爬虫的图标
二、查看页面元素
- 点击浏览器右上角爬虫图标
- 点击左下角箭头标识
- 将箭头标识移动到百度搜索框,输入框高亮
- 下方红色区域就是单位到输入框的属性
三、元素定位
从上图中可以得到相应搜索单元的属性,利用单元中元素的属性进行定位
- 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-元素定位相关推荐
- selenium2与python自动化4-css元素定位
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁. 这一篇cs ...
- Python+selenium自动化八大元素定位方法及实例(超详细)
目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...
- appium自动化,appium元素定位
appium自动化,appium元素定位 Appium是一款综合性软件,可让您在本地.移动或混合应用程序上执行复杂的测试. 简而言之,appium自动化框架允许您在不需要 SDK 或在每次测试会话后重 ...
- 三、Appium-python-UI自动化之元素定位uiautomatorviewer
uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,可以检查一个应用的UI来查看应用的布局和组件以及相关的属性. 一 ...
- UI自动化之元素定位(xpath、css)
很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...
- python+appium自动化测试元素定位
关于app自动化测试,元素定位工具有三个: appium自带的Appium Inspector工具 Android ADT原生的工具 python版uiautomator2中的weditor 由于我常 ...
- Web UI自动化测试之元素定位
目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...
- python自动化 2 对象定位(1)
这是一篇个人学习笔记 在wed自动化测试过程中,我们对网站的操作是都是建立在各个对象上的,因此元素定位就变得非常重要. 一.常用元素定位方法 二.id & name 定位 id定位: #cod ...
- UI自动化测试之元素定位方法
Python语言Selenium库UI自动化测试(一)元素定位方法 简介 当我们日常搭建自动化测试框架时,用Python调用浏览器时,通常有Requests库.Selenium库 这两个库是进行爬虫或 ...
最新文章
- 快速排序之Java实现
- angularjs 1.x $q模块使用
- mysql语句orderby_mysql中的orderby_MySQL
- 深度神经网络的反向传播算法数学推导
- Android--多个Activity共享Socket--单例模式
- Docker小白到实战之Dockerfile解析及实战演示,果然顺手
- 与传统的计算机硬件系统相比,计算机一级名词解释
- 掌握MySQL数据库这些优化技巧,事半功倍!
- mysql数据库密码为空_注意MySQL 数据库用户root密码为空_MySQL
- 解决XP的IIS HTTP 500”内部服务器错误
- GJB150A-2009军用装备实验室环境试验标准目录
- web开发-引用Google font library-学习笔记四
- 在线计算机带竖式,竖式计算器Scalar v4.2 采用竖式计算
- 2018人工智能发展盘点:国内各行业拥抱AI,总体呈现八大特点
- 深度学习用于图像/视频增强的损失函数(loss)及评价指标
- Visual Studio使用教程
- openbsd_仔细看一下OpenBSD
- 物料-贴片电容-标签识别
- 巨头卡位物联网 纷纷瞄准家庭网关设备
- 如何自己烧制全文RSS(打造自己RSS源)
热门文章
- 【UOJ34】—多项式乘法(FFT)
- 对PostgreSQL中 index only scan 的初步理解
- 一步一步asp.net_页面静态化管理
- [Buzz.Today]HP停止 webOS 设备的研发和运作
- Win API函数SetWindowOrgEx与SetViewportOrgEx
- 蓝牙HCI剖析(二)
- jieba分词实现原理(C++版 + python篇)(二)
- 排序 (5)桶排序“概念”
- (chap4 IP协议) 路由控制表(Routing Table)
- C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值