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环境搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 绘制场景热力图的示例

    python 绘制场景热力图的示例

    这篇文章主要介绍了python 绘制场景热力图的示例,帮助大家更好的利用python绘制图像,感兴趣的朋友可以了解下
    2020-09-09
  • python读取串口数据有几种方法

    python读取串口数据有几种方法

    在实际开发中,有很多场景需要通过串口与外部设备进行数据通信,本文主要介绍了python读取串口数据有几种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • jupyter的安装与使用以及运行卡顿问题及解决

    jupyter的安装与使用以及运行卡顿问题及解决

    这篇文章主要介绍了jupyter的安装与使用以及运行卡顿问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Window版下在Jupyter中编写TensorFlow的环境搭建

    Window版下在Jupyter中编写TensorFlow的环境搭建

    这篇文章主要介绍了Window版下在Jupyter中编写TensorFlow的环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • pycham查看程序执行的时间方法

    pycham查看程序执行的时间方法

    今天小编就为大家分享一篇pycham查看程序执行的时间方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python切片作为占位符使用实例讲解

    python切片作为占位符使用实例讲解

    在本篇内容里小编给大家分享的是一篇关于python切片作为占位符使用实例讲解内容,有兴趣的朋友们可以学习参考下。
    2021-02-02
  • 使用Python NumPy库绘制渐变图案

    使用Python NumPy库绘制渐变图案

    NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。但其实NumPy还可以绘制图画,本文将为大家介绍如何通过NumPy绘制彩色图画,感兴趣的小伙伴可以了解一下
    2021-12-12
  • python 配置uwsgi 启动Django框架的详细教程

    python 配置uwsgi 启动Django框架的详细教程

    这篇文章主要介绍了python 配置uwsgi 启动Django框架,本文给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • python实现数据结构中双向循环链表操作的示例

    python实现数据结构中双向循环链表操作的示例

    这篇文章主要介绍了python实现数据结构中双向循环链表操作的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • python计算最小优先级队列代码分享

    python计算最小优先级队列代码分享

    python计算最小优先级队列代码分享,大家参考使用吧
    2013-12-12

最新评论