在搜索框自动输入文本_selenium自动化测试之常见的定位元素
01一、Selenium介绍
Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。
中文文档:http://selenium-python-zh.readthedocs.io/en/latest/index.html
英文文档:http://selenium-python.readthedocs.io/index.html
02二、python、pycharm安装
详细安装指引请见实验三。
Python官网下载链接:
https://www.python.org/downloads/windows/
pycharm官网下载链接:https://www.jetbrains.com/pycharm/download/#section=windows
03下载chromedriver浏览器驱动
浏览器驱动下载地址:https://npm.taobao.org
下载到本地并解压:
打开解压文件,chromedriver.exe就是我们下载好的浏览器驱动,先不管等会大有用处
根据自己浏览器版本安装对应得驱动器
04安装selenium
一般python自带pip
Pip -V查看版本信息
Pip更新版本
安装最新版本的Selenium(当然你也可以安装制定版本的 pip install Selenium==3.41)
检查是否安装成功:看到版本信息就成功了
然后打开Python的IDLE
在IDLE中输入下图中的命令(黄色框中的),回车后显示红色框中的内容就可以判断Selenium安装成功了。
05八种常见的元素定位
先将Chromedriver复制粘贴到执行代码的文件夹下
一、查看页面元素
用谷歌浏览器打开百度首页,点击右上角>更多工具>开发者工具,就可以看到整个页面的html代码了
点击框中左上角的箭头图标,移动鼠标到百度搜索框,就可以自动定位到百度搜索框的HTML代码了,查看到搜索框的属性,我们可以看到搜索框有id,name,class等属性。
二、元素定位
1、id定位:find_element_by_id()
从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框
代码:
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器driver = webdriver.Chrome()
# 打开百度首页driver.get('https://www.baidu.com/')
# 通过id定位搜索框,并输入selenium
driver.find_element_by_id('kw').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
2、name定位:find_element_by_name()
从上面定位到的搜索框属性中,有个name="wd"的属性,我们可以通过这个name定位到这个搜索框
代码:
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开百度首页
driver.get('https://www.baidu.com/')
# 通过name定位搜索框,并输入selenium
driver.find_element_by_name('wd').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
3、class定位:find_element_by_class_name()
从上面定位到的搜索框属性中,有个class="s_ipt"的属性,我们可以通过这个class定位到这个搜索框
代码:
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过class定位搜索框,并输入selenium、driver.find_element_by_class_name('s_ipt').send_keys('selenium')
# 等待5秒sleep(5)
# 退出
driver.quit()
4、tag定位:find_element_by_tag_name()
如果懂HTML知识,我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格,等等...。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,a等tag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定义方法,仅了解就行。下面代码仅做参考,运行时必定报错
代码:
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开百度首页driver.get('https://www.baidu.com/')
# 通过tag定位搜索框,并输入selenium, 此处必报错driver.find_element_by_tag_name('input').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出driver.quit()
5、link定位:find_element_by_link_text()
此种方法是专门用来定位文本链接的,比如百度首页右上角有“新闻”,“hao123”,“地图”等链接
我们来定位“新闻”这个链接元素
代码:
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开百度首页
driver.get('https://www.baidu.com/')
# 通过link定位"新闻"这个链接并点击
driver.find_element_by_link_text('新闻').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
6、partial_link定位:find_element_by_partial_link_text()
有时候一个超链接的文本很长很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。
我们用这种方法来定位百度首页的“新闻”超链接
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过partial_link定位"新闻"这个链接并点击driver.find_element_by_partial_link_text('闻').click()
# 等待5秒
sleep(5)
# 退出
driver.quit()
7、xpath定位:find_element_by_xpath()
前面介绍的几种定位方法都是在理想状态下,有一定使用范围的,那就是:在当前页面中,每个元素都有一个唯一的id或name或class或超链接文本的属性,那么我们就可以通过这个唯一的属性值来定位他们。
但是在实际工作中并非有这么美好,有时候我们要定位的元素并没有id,name,class属性,或者多个元素的这些属性值都相同,又或者刷新页面,这些属性值都会变化。那么这个时候我们就只能通过xpath或者CSS来定位了。
代码:
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打开百度首页
driver.get(r'https://www.baidu.com/')
# 通过xpath定位搜索框,并输入selenium
driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
8、CSS定位:find_element_by_css_selector()
这种方法相对xpath要简洁些,定位速度也要快些,但是学习起来会比较难理解,这里只做下简单的介绍。
CSS定位百度搜索框
# coding = utf-8
from time import sleep
from selenium import webdriver
# 启动浏览器
driver = webdriver.Chrome()
# 打开百度首页
driver.get('https://www.baidu.com/')
# 通过CSS定位搜索框,并输入seleniumdriver.find_element_by_css_selector('#kw').send_keys('selenium')
# 等待5秒
sleep(5)
# 退出
driver.quit()
往期精彩文章:
你对软件测试了解多少?
人工智能时代应该掌握哪些技能
职场反省|如何提高工作效率?
我的简历老师帮忙改了一遍 面试邀约多了3倍 成功拿到offer
在搜索框自动输入文本_selenium自动化测试之常见的定位元素相关推荐
- 在搜索框自动输入文本_Selenium 时间搜索框查询和日期大小比较
在做Selenium自动化的时候,会遇到时间搜索框查询(如下图)并比较查询结果是否在输入的时间之类的问题. 要想解决这个问题,首先,第一步要做的就是选择时间,并获取到所选时间的文本信息. 如上图所示, ...
- 在搜索框自动输入文本_【Zotero文档翻译】管理篇:搜索
本文翻译自Zotero文档:https://www.zotero.org/support/searching 快速搜索 快速搜索能够让您快速在库中或分类中找到所需条目. 运行快速搜索 快速搜索的操作十 ...
- 使用 Powerapps 过程中解决过的问题 - 4 - 根据在搜索框中输入文本自动对数据源中不同的字段进行过滤和显示
在"解析Power Apps 自动生成的App - 2 - 浏览页面" 一文里, 有涉及到类似的问题.在自动生成的App 的浏览页面里,默认的为搜索框提供了下面的代码段: Ite ...
- Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)
文章目录 1. 自动补全 1.1 拼音分词器 1.2.1 自定义分词器 1.2.2 小结 1.2 自动补全 1.3 实现酒店搜索框自动补全 1.3.1 修改酒店映射结构 1.3.2 修改HotelDo ...
- Ajax实现百度搜索框自动提示功能
Ajax实现百度搜索框自动提示功能 当你在搜索框内写入关键字时下拉框会匹配和你输入的关键字相匹配的信息 文章目录 Ajax实现百度搜索框自动提示功能 一.实现效果 二.代码实现 1.前端页面 2.后端 ...
- 纯js实现搜索框自动补全
纯js实现搜索框自动补全 开发语言:HTML+CSS+JS 编辑器:VSCode 构建思路:建立两个div,一个用于输入和搜索,一个用于展示,用于展示的初始状态为隐藏的.后面当有键盘输入事件时就显示, ...
- 搜索计算机无法输入法,Windows10左下角搜索框无法输入字符的两种解决方法
用户在使用win10系统过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行.下 ...
- 搜索框自动补全(模糊匹配)功能实现
本地实现了一个搜索框自动补全的小功能,在JQuery UI的autocomplete插件的基础上,加入了自己的业务代码,贴出来回顾一下,同时可以给大家一个参考 首先贴出的是JQuery Ui 的自动补 ...
- 计算机搜索没办法打汉字,Win10左下角搜索框无法输入字符的两种解决方法
用户在使用 win10系统 过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行 ...
最新文章
- os的进程调度(读书笔记)
- 页面置换算法简单对比----《operating system concepts》《操作系统原理》
- python数字加密解密_Python对整形数字进行加密和解密
- TCP三次握手的序列号和确认号
- Keys.js 官方使用说明
- SAP License:SAP系统的优点和功能
- mysql为什么总是错的_这个mysql如何总是错的
- python数组横向合并_python中合并数组的方法
- 【BZOJ2655】—calc(拉格朗日插值+生成函数+dp)
- 【学习】自定义view
- Atitit.词法分析的理论原理 part2
- 一文搞懂什么是免疫算法Immune Algorithm【详细介绍】
- 测试两个主机之间的连通性_如何使用知行EDI系统模拟连通性测试?
- 高项论文(质量管理2)
- 嵌入式系统开发笔记19:CJ/T-188 冷热量表协议解析8
- 使用 LaTeX 制作幻灯片
- Received empty response from Zabbix Agent at [agent]. Assuming that agent dropped connection because
- python-模拟登陆多种方法总结
- Linux下命令行打开word、excel、pdf文件
- QT调用opencv的videowrite类输出生成视频打不开(已解决)
热门文章
- 【Mac】一些软件的图片和视频位置 QQ 微信
- Scala : unsupported operationexception : empty.reduceLeft
- Spring : Spring @Transactional-事物提交
- Spark学习-SparkSQL--04-SparkSQL CLI 单节点运行与yarn集群运行
- php 存储过程 sqlsrv_query,php-PHP如何得用sqlsrv函数来调用MSSQL中的存储过程,并返回数据集?...
- 深度分析Spring中的构造器注入
- 修改定时任务不重启项目,SpringBoot如何实现?
- Java多线程学习十二: synchronized的工作原理 以及背后的“monitor 锁”
- Docker Kubernetes 环境搭建
- leetcode题解5-最长回文子串