selenium环境配置和八大元素定位
一.环境配置
1.selenium下载安装
安装一:pip install selenium(多数会超时安装失败)
安装二:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium(使用清华园镜像下载)
2.webdriver下载
下载地址:http://chromedriver.storage.googleapis.com/index.html(谷歌为例)
下载时选择与当前谷歌浏览器版本一致或相近的版本去下载,下载完成后解压到python解释器目录下


二.八大元素
1.ID
ID具有唯一性,若是当前标签含有id属性,可以优先使用id定位。
from selenium import webdriver
from time import sleep from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 实例化浏览器对象
driver.get('https://www.bing.com') # 设置跳转网页
driver.find_element(by=By.ID, value='sb_form_q').send_keys('我是好人') # id定位
sleep(3) # 等待3s
driver.quit() # 关闭网页
by表示当前使用什么元素定位,我们可以进入By模块里可以看到By类下的八种属性,value表示当前
属性的值,send_keys赋值。

2.NAME
name属性不唯一,一个页面可能有多个相同的name值,所以使用时要确保该属性值是唯一的
driver_name = driver.find_element(by=By.NAME, value='q')
driver_name.send_keys("作者是帅哥")
3.CLASS_NAME
driver_name = driver.find_element(by=By.CLASS_NAME, value='sb_form_q')
driver_name.send_keys("作者是帅哥")
4.LINK_TEXT
用于<a>标签定位
driver_name = driver.find_element(by=By.LINK_TEXT, value='文案')
driver_name.click() # click点击事件
value的值要和<a>文案</a>的值相等,click()点击超链接
5.PARTIAL_LINK_TEXT
PARTIAL_LINK_TEXT与LINK_TEXT相似,都是用于超链接,区别在于前置value为模糊查询,后者匹配相等
driver_name = driver.find_element(by=By.LINK_TEXT, value='案')
driver_name.click() # click点击事件
6.TAG_NAME
用于标签定位(<a>,<p>,<input>....),该元素定位不常用,效率低
driver_name = driver.find_element(by=By.TAG_NAME, value='input')
driver_name.send_keys("作者是帅哥")
7.XPATH
(1)可理解为元素路径定位,内含两种定位,绝对路径和相对路径
- 绝对路径:以/html开头
- 相对路径:以//*开头
driver.find_element(by=By.XPATH, value="//*[@id='sb_form_q' and @name='q']").send_keys("作者是帅哥") #相对路径
driver.find_element(by=By.XPATH, value="/html/body/div[2]/div/div[3]/div[2]/form/div[1]/input").send_keys("作者是帅哥") #相对路径
相对路径下[]内可连接多个and条件。这就可以解决因为name值相等元素定位错误的问题,前提需保证你定
位的标签中有这些属性。层级结构非常复杂时,手动输入路径可能会出错,这个时候我们可直接复制即可

(2)XPATH用法拓展(适用于相对路径)
- contains用法
driver.find_element(by=By.XPATH, value="//*[contains(@name,'na') and (@id,'sb_form_q')]").send_keys("作者说帅哥")
[contains(@属性,"属性值")]:模糊匹配
- starts-with用法
driver.find_element(by=By.XPATH, value="//*[starts-with(@name,'2') and contains(@id,'2')]").send_keys("12")
[starts-with(@属性,"属性值")]:匹配以XXX开头
8.CSS_SELECTOR
(1)层级语法定位
driver.find_element(by=By.CSS_SELECTOR, value="copy selector").click()

层级定位可直接copy selector即可
(2)选择器定位
- id选择器
driver.find_element(by=By.CSS_SELECTOR, value="#sb_form_q").click()
这里需要在value值前加个#
- class选择器
driver.find_element(by=By.CSS_SELECTOR, value="[class='sb_form_q']").send_keys("class选择器") #精准匹配
- 属性选择器
语法一:value="[属性='属性值']"
driver.find_element(by=By.CSS_SELECTOR, value="[name='q']").send_keys("属性选择器")
driver.find_element(by=By.CSS_SELECTOR, value="[id='sb_form_q']").send_keys("属性选择器")
语法二:value="标签[属性=‘属性值’]"
driver.find_element(by=By.CSS_SELECTOR, value="a[id='halou']").click()
(3)CSS_SELECTOR拓展
- 匹配以XX开头:value="[id^='head']")
- 匹配以XX结尾:value="[id$='tail']"
- 模糊匹配:valur="[name*='like']"
三.find_element与find_elements区别
我们在使用find_element和find_elements获取定位元素时,后者返回的是list集合类型的,
前者返回的是<class 'selenium.webdriver.remote.webelement.WebElement'> 类型。
- find_element:适用于获取唯一的定位元素值(默认返回第一个)
- find_elements:适用于获取多个值相同的元素定位(默认返回第一个,我们可用对应的下标来获取)
selenium环境配置和八大元素定位的更多相关文章
- Java + Selenium + WebDriver八大元素定位方式
UI自动化测试的第一步就是进行元素定位,下面给大家介绍一下Selenium + WebDriver的八大元素定位方式.现在我们就以百度搜索框为例进行元素定位,如下图: 一.By.name() Java ...
- selenium八大元素定位方法
1.ID定位 可以根据元素的id来定位属性,id是当前整个HTML页面中唯一的,所以可以通过id属性来唯一定位一个元素,是首选的元素定位方式.(动态ID不做考虑) # 导入webdriver和By f ...
- C# selenium环境配置
1.下载C#selenium selenium官网: http://www.seleniumhq.org/download/ 下载后解压: 打开net35后,将里面的dll文件添 ...
- Selenium:WebDriver简介及元素定位
参考内容:官方API文档,下载链接:http://download.csdn.net/detail/kwgkwg001/4004500 虫师:<selenium2自动化测试实战-基于python ...
- Python3+Selenium环境配置
一.所需工具 1.Python3.6安装包 2.Selenium安装包(selenium-server-standalone-3.8),如果是Python3的话可以不用下载selenium压缩包,Py ...
- python+selenium环境配置及浏览器调用
最近在学习python自动化,从项目角度和技术基础角度出发,我选择了python+selenium+appium的模式开始我的自动化测试之旅: 一.python安装 二.python IDE使用简介 ...
- 跟浩哥学自动化测试Selenium -- 浏览器的基本操作与元素定位(3)
浏览器的基本操作与元素定位 通过上一章学习,我们已经学会了如何设置驱动路径,如何创建浏览器对象,如何打开一个网站,接下来我们要进行一些复杂的操作比如先打开百度首页,在打开博客园,网页后退,前进等等,甚 ...
- 【转】【selenium+Python WebDriver】之元素定位不到解决办法
感谢: 煜妃的<Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)> ClassName定位报错问题:<[Python] ...
- 【转载】【selenium+Python WebDriver】之元素定位
总结: 感谢: “煜妃”<Selenuim+Python之元素定位总结及实例说明> “Huilaojia123”<selenium WebDriver定位元素学习总结> “上海 ...
随机推荐
- 详解六大国产CPU处理器
一个执着于技术的公众号 CPU作为计算机设备的运算和控制核心,负责指令读取.译码与执行,因研发门槛高.生态构建难,被认为是集成电路产业中的"珠穆朗玛峰". 纵观全球,Intel.A ...
- 真香警告!JitPack 开源库集成平台
前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介 官方介绍: JitPack 是一个用于 JVM 和 Android 项目的新颖的包存储库.它按需构建 Git 项目并为您提供即用 ...
- js运算符、 流程控制 、函数、内置对象、BOM与DOM操作
运算符 # 1.算术运算符 var x=10; var res1=x++; '先赋值后自增1' var res2=++x; '先自增1后赋值' # 2.比较运算符 弱等于:自动转换类型 '5' == ...
- 使用Husky提升你的项目规范
使用 ESLint, Prettier, Husky, Lint-staged 提升你的项目规范 本文写于 2020 年 11 月 7 日 大家应该都知道 ESLint 与 prettier,他们的用 ...
- 用c++语言socket库函数实现服务端客户端聊天室
客户端 /* * 程序名:client.cpp,此程序用于演示socket的客户端 * 作者:C语言技术网(www.freecplus.net) 日期:20190525 */ #include < ...
- 好客租房23-react组件的两种创建方式(抽离为独立js)
2.3抽离为单独组件 组件作为一个单独的个体,一般把每个组件放在单独的js中文件中 1创建hello.js 2在hello.js中导入React 3创建组件(函数或者类) hello.js子组件 // ...
- nazo.io 通关记录
游戏网址 说在前面 答案错误页面 nazo.io/wrong 攻略 第0关 谜.io 纯粹是欢迎你来游戏. 所以他给你的start就是答案. 第1关 欢迎 它用灰体字写了key: welcome 直接 ...
- vs2022+resharper C++ = 拥有一个不输clion的代码体验
这篇文章详细讲一下resharper C++在vs2022中的配置,让他拥有跟clion一样好用的代码补全功能. 为什么clion写代码体验很好好用为啥还要用vs呢,因为网上很多教程都是基于visua ...
- 使用 vim 快速对当前文件夹下的文件批量重命名
前言 我们在使用 Linux 的时候,有很多种方法可以对文件进行重命名,例如 命令行 下的 mv 命令,或者是使用像 dolphin 这样的图形文件管理器.但是有时候需要对一个文件夹下的所有文件批量重 ...
- JS基础6--逻辑运算符
&&与 ||或 !非 如果对一个值进行两次取反,它不会变化 如果对一个非布尔值进行取反,则会将其转换为布尔值,再取反 所以我们可以利用该特点.来将 ...