一、selenium的安装以及简单应用

我们以谷歌浏览器的chromedriver为例

1、在Python虚拟环境中安装selenium模块

pip/pip3 install selenium

2、下载版本符合的webdriver

以chrome谷歌浏览器为例

查看谷歌浏览器的版本

鼠标点击右上角的竖排的三个点,然后选择“帮助”,选择“关于 Google Chrome”,进去之后即可查看谷歌浏览器的版本

访问下载chromedriver网站

访问chromedriver下载地址,点击进入不同版本的chromedriver下载页面

点击notes.txt进入版本说明页面 

查看chrome和chromedriver匹配的版本

根据操作系统下载正确版本的chromedriver

解压压缩包后获取python代码可以调用的谷歌浏览器的webdriver可执行文件

  • windows为 chromedriver.exe
  • linux和macos为 chromedriver

chromedriver环境的配置

  • windows环境下需要将 chromedriver.exe 所在的目录设置为path环境变量中的路径
  • linux/mac环境下,将 chromedriver 所在的目录设置到系统的PATH环境值中

3、chromedriver环境配置的教程

windows环境下将 chromedriver.exe 所在的目录设置为path环境变量中的路径的过程

鼠标右键点击“Google Chrome” ,然后点击“打开文件所在位置”复制 chrome.exe 所在的文件路径

接着打开“控制面板” 搜索输入 “环境变量” 并搜索,然后点击 “编辑系统环境变量”

 

二、selenium的简单使用

Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的。

Selenium 可以直接调用浏览 器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页 面,获取需要的数据,甚至页面截屏等。

我们可以使用selenium很容易完成之前编写的爬虫,接下来我们就来 看一下selenium的运行效果

接下来我们就通过代码来模拟百度搜索(展示效果)

import time 
from selenium import webdriver 
 
# 通过指定chromedriver的路径来实例化driver对象,chromedriver放在当前目录。 
# driver = webdriver.Chrome(executable_path='./chromedriver') 
# 这里的chromedriver已经添加环境变量 
driver = webdriver.Chrome() 
 
# 控制浏览器访问url地址 
driver.get("https://www.baidu.com/") 
time.sleep(3)
# 在百度搜索框中搜索'python' 
driver.find_element_by_id('kw').send_keys('python') 
# 点击'百度搜索' 
driver.find_element_by_id('su').click() 
time.sleep(6) 
# 退出浏览器 
driver.quit()

运行结果

webdriver.Chrome(executable_path='./chromedriver') 中executable参数指定的是下载好的

chromedriver文件的路径

driver.find_element_by_id('kw').send_keys('python') 定位id属性值是'kw'的标签,并向其中输入字符 串'python'

driver.find_element_by_id('su').click() 定位id属性值是su的标签,并点击

click函数作用是:触发标签的js的click事件

三、selenium提取数据

1、driver对象常用的属性和方法

在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法

  • driver.page_source 获取当前标签页浏览器渲染之后的网页源代码
  • driver.current_url获取当前标签页的url
  • driver.close() 关闭当前标签页,如果只个一个标签页则关闭整个浏览器
  • driver.quit() 关闭浏览器
  • driver.forward() 页面前进
  • driver.back() 页面后退
  • driver.screen_shot(img_name) 页面截图

示例

打印当前标签页的url

import time
from selenium import webdriver
 
driver = webdriver.Chrome()
# 控制浏览器访问url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 打印当前标签页的url
print(driver.current_url)
driver.quit()

运行结果:

2、driver对象定位标签元素获取标签对象的方法

在selenium中可以通过多种方式来定位标签,返回标签元素对象

方式 功能
find_element_by_id 返回一个元素
find_element(s)_by_class_name 根据类名获取元素列表
find_element(s)_by_name 根据标签的name属性值返回包含标签对象元素的列表
find_element(s)_by_xpath 返回一个包含元素的列表
find_element(s)_by_link_text 根据连接文本获取元素列表
find_element(s)_by_partial_link_text 根据链接包含的文本获取元素列表
find_element(s)_by_tag_name; 根据标签名获取元素列表
find_element(s)_by_css_selector 根据css选择器来获取元素列表

注意

find_element和find_elements的区别:

  • 多了个s就返回列表,没有s就返回匹配到的第一个标签对象
  • find_element匹配不到就抛出异常,find_elements匹配不到就返回空列表

by_link_text 和 by_partial_link_tex 的区别:全部文本和包含某个文本

以上函数的使用方法:

driver.find_element_by_id('id_str')

id_str是id值

示例

接下来我们就通过代码来模拟百度搜索(具体讲解)

首先我们先打开百度页面,然后点击网页检查 ,定位搜索框,可以看见搜索框的input标签的id值为kw

  • 于是开始编写基础代码
  • 通过driver.get()获取网页
  • 通过find_element_by_id('kw')定位搜索框
  • 通过.send_keys('python')向搜索框输入搜索信息
import time
from selenium import webdriver
 
driver = webdriver.Chrome()
 
# 控制浏览器访问url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 在百度搜索框中搜索'python'
driver.find_element_by_id('kw').send_keys('python')

再定位搜索按钮:“百度一下” ,其id值为su

完善代码,通过 .click() 实现点击搜索

import time
from selenium import webdriver
 
driver = webdriver.Chrome()
 
# 控制浏览器访问url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 在百度搜索框中搜索'python'
driver.find_element_by_id('kw').send_keys('python')
# 点击'百度搜索'
driver.find_element_by_id('su').click()
time.sleep(6)
# 退出浏览器
driver.quit()

运行结果

3、标签对象提取文本内容和属性值

find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法

对元素执行点击操作: element.click()

对定位到的标签对象进行点击操作

向输入框输入数据: element.send_keys(data)

对定位到的标签对象输入数据

获取文本: element.text

通过定位获取的标签对象的 text 属性,获取文本内容

获取属性值: element.get_attribute("属性名")

通过定位获取的标签对象的 get_attribute 函数,传入属性名,来获取属性的值

获取 “百度一下”搜索按钮的value属性值

import time
from selenium import webdriver
 
driver = webdriver.Chrome()
 
# 控制浏览器访问url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 点击'百度搜索',用ele变量接受获取的元素
ele = driver.find_element_by_id('su')
print(ele.get_attribute('value'))
time.sleep(6)
# 退出浏览器
driver.quit()

运行结果

四、selenium无头模式

我们知道,当我们利用 dirver.get() 获取网页时会自动打开一个网页,但是有时候我们可能不需要通过打开浏览器获取数据,于是就可以通过给driver对象设置无头模式 。

# 给driver对象设置无头模式
op = webdriver.ChromeOptions()
op.add_argument('--headless')
driver = webdriver.Chrome(options=op)

以上就是Python selenium模块的安装和配置教程的详细内容,更多关于Python selenium模块的资料请关注Devmax其它相关文章!

Python selenium模块的安装和配置教程的更多相关文章

  1. 适用于iOS和Android设备的自动验收测试

    我正在开展一个网络项目,很明显,进行一些Selenium类型的自动验收测试会非常有帮助.但该项目是移动/手持设备的网站,而非Selenium支持的桌面浏览器.谷歌搜索一下,发现iOS为Frank,Android为Robotium.这些是使用的两种工具吗?或者有什么好的或更好的东西可能允许我使用Android和iOS的一个工具?不确定这对于移动设备上的Web测试有何用处.

  2. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  3. Swift基本使用-函数和闭包(三)

    声明函数和其他脚本语言有相似的地方,比较明显的地方是声明函数的关键字swift也出现了Python中的组元,可以通过一个组元返回多个值。传递可变参数,函数以数组的形式获取参数swift中函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的潜逃来重构过长或者太复杂的函数。

  4. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  5. Swift、Go、Julia与R能否挑战 Python 的王者地位

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. 红薯因 Swift 重写开源中国失败,貌似欲改用 Python

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  7. 你没看错:Swift可以直接调用Python函数库

    上周Perfect又推出了新一轮服务器端Swift增强函数库:Perfect-Python。对,你没看错,在服务器端Swift其实可以轻松从其他语种的函数库中直接拿来调用,不需要修改任何内容。以如下python脚本为例:Perfect-Python可以用下列方法封装并调用以上函数,您所需要注意的仅仅是其函数名称以及参数。

  8. Swift中的列表解析

    在Swift中完成这个的最简单的方法是什么?我在寻找类似的东西:从Swift2.x开始,有一些与你的Python样式列表解析相当的东西。(在这个意义上,它更像是Python的xrange。如果你想保持集合懒惰一路通过,只是这样说:与Python中的列表解析语法不同,Swift中的这些操作遵循与其他操作相同的语法。

  9. swift抛出终端的python错误

    每当我尝试启动与python相关的swift时,我都会收到错误.我该如何解决?

  10. 在Android上用Java嵌入Python

    解决方法看看this,它适用于J2SE,你可以尝试在Android上运行.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部