selenium环境搭建及基本元素定位方式详解

 更新时间:2023年04月06日 08:16:26   作者:少壮不努力123  
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题,这篇文章主要介绍了selenium环境搭建及基本元素定位方式,需要的朋友可以参考下

谷歌驱动下载地址:

http://chromedriver.storage.googleapis.com/index.html

一、selenium简介

由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行CSS、JavaScript代码,因此需要我们做人为判断;

1、什么是selenium selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;由于selenium解析执行了CSS、JavaScript所以相对requests它的性能是低下的;

2、selenium的用途

1)selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫。

2)selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器

二、selenium的安装与测试

1、下载selenium模块:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium或者在pycharm中下载

2、安装浏览器驱动1) Google浏览器驱动(在下载驱动之前,查看一下chrome浏览器的版本号,如下:

    1)谷歌驱动下载地址:

 http://chromedriver.storage.googleapis.com/index.html

当然也可以去官网找最新的版本,官网: https://sites.google.com/a/chromium.org/chromedriver/downloads另外注意:把下载好的chromedriver.exe放到python安装路径的scripts目录中即可

    2) firefox浏览器驱动:selenium3默认支持的webdriver是Firfox,而Firefox需要安装geckodriver下载链接:https://github.com/mozilla/geckodriver/releases

     3) 测试是否安装成功

from selenium import webdriver
browser=webdriver.Chrome()
# # 打开浏览器
browser.get('https://baidu.com')
s=browser.find_element_by_id('kw') # 其中kw便是页面中某个元素的id值
print(s)

2.1 设置浏览器驱动

from selenium import webdriver
driver = webdriver.Firefox() # Firefox浏览器
driver = webdriver.Chrome() # Chrome浏览器
driver = webdriver.Ie() # Ie浏览器
driver = webdriver.Edge() # Edge浏览器
driver = webdriver.PhantomJS() # PhantomJS()

2.2 Selenium 元素定位

<html>
  <head>
  <body link="#0000cc">
    <a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
    <form id="form" class="fm" name="f" action="/s">
      <span class="soutu-btn"></span>
        <input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
# 通过 id 定位
dr.find_element_by_id("kw")
 
# 通过name定位:
dr.find_element_by_name("wd")
 
# 通过class name定位:
dr.find_element_by_class_name("s_ipt")
 
# 通过tag name定位:
dr.find_element_by_tag_name("input")
 
# 通过 xpath 定位的几种写法
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']"
)dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")
 
# 通过 css 定位的几种写法
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
 
# 通过 link_text 定位
dr.find_element_by_link_text("新闻")
dr.find_element_by_link_text("hao123")
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")
 
# 如果是定位一组元素,用下面
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

三、selenium的使用

所谓模拟浏览器基本就是下面的流程:

请求

显示页面

查找元素

点击可点击元素

所以如何使用selenium找到页面中的标签,进而触发标签事件,就会变的尤为重要

1. selenium选择器
要想定位页面的元素,selenium也提供了一系列的方法。
1) 通过标签id属性进行定位
browser.find_element_by_id('kw') # 其中kw便是页面中某个元素的id值
2) 通过标签name属性进行定位
# 两种方式是一样的
browser.find_element_by_name("wd") # 其中wd是页面中某个元素的name值
3) 通过标签名进行定位
browser.find_element_by_tag_name("img") # img参数表示的就是图片标签img
4) 通过CSS查找方式进行定位
browser.find_elements_by_css_selector("#kw") # 根据选择器进行定位查找,其中#kw表示的是id选择器名称是kw的
5) 通过xpath方式定位
browser.find_element_by_xpath('//*[@id="kw"]') # 参数即是xpath的语法
6) 通过搜索页面中链接进行定位
有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link
browser.find_element_by_link_text("设置")
通过搜索页面中链接进行定位 ,可以支持模糊匹配**
browser.find_element_by_partial_link_text("百度") # 查找页面所有的含有百度的文字链接

到此这篇关于selenium环境搭建及基本元素定位方式的文章就介绍到这了,更多相关selenium环境搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • conda虚拟环境使用pip下载包到当前环境的两种方法

    conda虚拟环境使用pip下载包到当前环境的两种方法

    conda管理包很方便,但并不是所有包都有最新的conda版本,所以仍需要使用conda中的pip来安装包,下面这篇文章主要给大家介绍了关于conda虚拟环境使用pip下载包到当前环境的两种方法,需要的朋友可以参考下
    2022-08-08
  • Python绘制正二十面体图形示例

    Python绘制正二十面体图形示例

    正二十面体由20个小的正三角形面组成,每个顶点周围有 5 个顶点,下面这篇文章主要给大家介绍了关于Python绘制正二十面体图形的相关资料,需要的朋友可以参考下
    2022-12-12
  • python实现音乐下载器

    python实现音乐下载器

    这篇文章主要为大家详细介绍了python实现音乐下载器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 深入解析Python中filter函数的使用

    深入解析Python中filter函数的使用

    在Python中,filter函数是一种内置的高阶函数,它能够接受一个函数和一个迭代器,然后返回一个新的迭代器,本文主要来介绍一下Python中filter函数的具体用法,需要的可以参考一下
    2023-07-07
  • python中的集合及集合常用的使用方法

    python中的集合及集合常用的使用方法

    这篇文章主要介绍了python中的集合及集合常用的使用方法,集合是一个无序的不重复元素序列,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • Pandas数据分析之pandas数据透视表和交叉表

    Pandas数据分析之pandas数据透视表和交叉表

    这篇文章主要介绍了Pandas数据分析之pandas数据透视表和交叉表,pandas对数据框也可以像excel一样进行数据透视表整合之类的操作。主要是针对分类数据进行操作,还可以计算数值型数据,去满足复杂的分类数据整理的逻辑
    2022-08-08
  • Pandas中常用的七个时间戳处理函数使用总结

    Pandas中常用的七个时间戳处理函数使用总结

    在零售、经济和金融等行业,数据总是由于货币和销售而不断变化,生成的所有数据都高度依赖于时间。如果这些数据没有时间戳或标记,实际上很难管理所有收集的数据。本文为大家准备了Pandas中常用的七个时间戳处理函数,需要的可以参考一下
    2022-04-04
  • 教你用 Python 发送告警通知到微信的操作过程

    教你用 Python 发送告警通知到微信的操作过程

    大家都知道常见的告警方式有:邮件,电话,短信,微信,今天通过本文给大家介绍下Python 发送告警通知到微信的操作过程,感兴趣的朋友一起看看吧
    2022-01-01
  • python中把元组转换为namedtuple方法

    python中把元组转换为namedtuple方法

    在本篇文章里小编给大家整理的是一篇关于python中把元组转换为namedtuple方法,有兴趣的朋友们可以参考下。
    2020-12-12
  • 浅谈django orm 优化

    浅谈django orm 优化

    这篇文章主要介绍了浅谈django orm 优化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论