IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Headless Chrom自动化工具详解 -> 正文阅读

[Python知识库]Headless Chrom自动化工具详解

无界面的谷歌浏览器,之前我们的自动化测试工具是phantomjs,但是这个工具不在进行维护了,所以我们可以使用这个谷歌的工具了。

Vitaly Slobodin是广为使用的无头网站测试框架Phantom.js的维护者(Maintainer),现在他决定放弃这一职责。Slobodin在Google论坛上发帖表示,鉴于Chrome 59推出了无头浏览特性,他认为没有理由再继续维护Phantom.js。可以看的出我们现在其实已经没必要再去学习Phantom了,她的作者都放弃了他,项目都已经封存。

这个东西主要是用在动态页面的时候,比如我们爬取的时候经常会发现chrom打开能看到100张图片,爬虫爬下来却只有20张,这是因为使用了动态加载技术,还有一些页面使用ajax动态刷新,这时候能不能爬取呢,当然可以,分析JS文件,构建请求,发送请求得到JSON回复信息,拿到资源的地址,但是这相当于我们将前端的工作给做了,很烦,所以我们有的时候用无头浏览器直接相当于我们操作浏览器,很nice。缺点是速度慢,优点是简单。

一、selenium介绍

selenium:是python的一个第三方库,对外提供的接口可以操作你的浏览器,让浏览器完成自动化操作

1.1、安装selenium

pip install selenium

1.2、安装chromdriver

要安装符合自己浏览器版本的driver,谷歌浏览器的版本可以从设置->关于chrom看到

http://npm.taobao.org/mirrors/chromedriver/

1.3、测试进行百度的搜索

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time

chrome_options = Options()
# 以无头模式启动,我们为了看效果先给注释掉
# chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

path = r'C:\Users\LoveSS\Desktop\pytest\chromedriver.exe'
service = Service(executable_path=path)
driver = webdriver.Chrome(service=service, options=chrome_options)

url = 'http://www.baidu.com/'
# 打开这个网址
driver.get(url=url)
# 延时0.5s
driver.implicitly_wait(0.5)
# 获得输入条
search_input = driver.find_element(By.ID, "kw")
# 获得搜索按钮
search_button = driver.find_element(By.ID, "su")
# 再输入框输入
search_input.send_keys("Selenium")
# 搜索按钮点击
search_button.click()

time.sleep(10)
# 退出
driver.quit()

我们发现可以进行搜索。

二、selenium操作

这个网址有着官方文档https://www.selenium.dev/。想要详细学习可以从官方文档入手

2.1、导航

# 打开网址
driver.get("https://selenium.dev")

# 后退
driver.back()

# 前进
driver.forward()

# 刷新
driver.refresh()

2.2、alert

2.2.1、alert警告框

警告框只有确认按键

# 单击链接以激活警报
driver.find_element(By.LINK_TEXT, "See an example alert").click()

# 等待警报显示,并将其存储在变量中
alert = wait.until(expected_conditions.alert_is_present())

# 将警报文本存储在变量中
text = alert.text

# 按OK按钮
alert.accept()
2.2.2、confirm确认框

可以确认可以取消

# 单击链接以激活警报
driver.find_element(By.LINK_TEXT, "See a sample confirm").click()

# 等待警报显示
wait.until(expected_conditions.alert_is_present())

# 将警报存储在变量中以供重用
alert = driver.switch_to.alert

# 存储警告信息
text = alert.text

# 取消按键
alert.dismiss()
2.2.3、Prompt 提示框

提示框是有输入框和确认按键的

# 单击链接以激活警报
driver.find_element(By.LINK_TEXT, "See a sample prompt").click()

# 等待警报显示
wait.until(expected_conditions.alert_is_present())

# 将警报存储在变量中以供重用
alert = Alert(driver)

# 填入你的信息
alert.send_keys("Selenium")

# 点击OK按键
alert.accept()

2.3、Cookie

2.3.1、添加cookie
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://www.example.com")

# 将cookie添加到当前浏览器上下文中
driver.add_cookie({"name": "key", "value": "value"})
2.3.2、获取命名的cookie
# 获取名为'foo'的cookie
print(driver.get_cookie("foo"))
2.3.3、获取全部cookies
driver.add_cookie({"name": "test1", "value": "cookie1"})
driver.add_cookie({"name": "test2", "value": "cookie2"})

# 获得所有cookies
print(driver.get_cookies())
2.3.4、删除cookie
# 删除名为'test1'的cookie
driver.delete_cookie("test1")
2.3.5、删除所有cookie
#  删除所有cookie
driver.delete_all_cookies()
2.3.6、lax

当您将cookie sameSite属性设置为 Lax, cookie将与第三方网站发起的GET请求一起发送.

driver.get("http://www.example.com")
# 使用sameSite将cookie添加到当前浏览器上下文中'Strict' (or) 'Lax'
driver.add_cookie({"name": "foo", "value": "value", 'sameSite': 'Strict'})
driver.add_cookie({"name": "foo1", "value": "value", 'sameSite': 'Lax'})
cookie1 = driver.get_cookie('foo')
cookie2 = driver.get_cookie('foo1')
print(cookie1)
print(cookie2)

2.4、点击

driver.find_element(By.ID, "su").click()

2.4、发送键位

driver.find_element(By.ID, "su").send_keys("webdriver" + Keys.ENTER)

2.5、清除

driver.find_element(By.ID, "su").clear()

2.6、查询元素

我们一共有这么几种查询方式

class By(object):
    """
    Set of supported locator strategies.
    """

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
res = driver.find_element(By.ID, "su")
print(res.text)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:52:10  更:2022-01-28 11:53:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:41:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码