详解Selenium 元素定位和WebDriver常用方法


Posted in Python onDecember 04, 2020

一、定位元素的8种方式

1、方法介绍

定位一个元素 定位多个元素 含义
find_element_by_id() find_elements_by_id() 通过元素id定位
find_element_by_name() find_elements_by_name() 通过元素name定位
find_element_by_xpath() find_elements_by_xpath() 通过xpath表达式定位
find_element_by_link_text() find_elements_by_link_text() 通过完整超链接定位
find_element_by_partial_link_text() find_elements_by_partial_link_text() 通过部分链接定位
find_element_by_tag_name() find_elements_by_tag_name() 通过标签定位
find_element_by_class_name() find_elements_by_class_name() 通过类名进行定位
find_elements_by_css_selector() find_elements_by_css_selector()

2、实例演示

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

#通过元素id定位()
driver.find_element_by_id('kw')

#通过元素name定位
driver.find_element_by_name('wd')

#通过类名进行定位
driver.find_element_by_class_name('s_ipt')

#通过标签定位
driver.find_element_by_tag_name('input')

#通过xpath表达式定位
driver.find_element_by_xpath('//*[@id="kw"]')

#通过css选择器进行定位
driver.find_element_by_css_selector('#kw')

#通过完整超链接定位
driver.find_element_by_link_text('新闻')

#通过部分链接定位
driver.find_element_by_partial_link_text('hao')

driver.quit()#关闭所有标签页

关于xpaht和css的定位比较复杂,请参考:

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("程序猿杂记")
driver.find_element_by_id("su").click()
time.sleep(5)

driver.quit() # 关闭所有标签页

3.提交

submit():用于提交表单,相当于回车,应用范围远不及 click()广泛

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

driver_id = driver.find_element_by_id("kw")
driver_id.send_keys("程序猿杂记")
driver_id.submit()
time.sleep(5)

driver.quit() # 关闭所有标签页

4.获取一些内容

  • title:获得当前页面的标题
  • current_url:用户获得当前页面的URL
  • size: 获取元素的尺寸
  • text: 获取元素的文本
  • get_attribute(): 获得属性值
  • is_displayed(): 该元素是否用户可见
from selenium import webdriver

driver = webdriver.Chrome()

driver.get('https://www.baidu.com/')

# 获取当前页面的title
title = driver.title
print(title)

#获取当前页的url
url = driver.current_url
print(url)

# 获得输入框的尺寸
input_size = driver.find_element_by_id('kw').size
print(input_size)

# 返回百度页面底部备案信息
text = driver.find_element_by_id("cp").text
print(text)

# 返回元素的属性值, 可以是 id、 name、 type 或其他任意属性
attribute = driver.find_element_by_id("kw").get_attribute('type')
print(attribute)

# 返回元素的结果是否可见, 返回结果为 True 或 False
result = driver.find_element_by_id("kw").is_displayed()
print(result)

driver.quit() # 关闭所有标签页

Selenium文集传送门:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

到此这篇关于详解Selenium 元素定位和WebDriver常用方法的文章就介绍到这了,更多相关Selenium 元素定位内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 Python
Python unittest单元测试框架及断言方法
Apr 15 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 Python
Selenium 安装和简单使用的实现
Dec 04 #Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 #Python
Python实现中英文全文搜索的示例
Dec 04 #Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 #Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 #Python
python飞机大战游戏实例讲解
Dec 04 #Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 #Python
You might like
图形数字验证代码
2006/10/09 PHP
PHP 学习路线与时间表
2010/02/21 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
小学庆六一活动方案
2014/02/28 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
社会实践活动总结
2015/02/05 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript