首页 > 编程语言 >python-selenium4使用-1、安装与浏览器配置

python-selenium4使用-1、安装与浏览器配置

时间:2022-12-30 17:12:27浏览次数:71  
标签:webdriver 浏览器 service python selenium selenium4 import chrome

环境

Python 3.9.13

浏览器 chrome

selenium 4.4.3

问题

在一个自动化脚本的运行下,环境是非常重要的,因此我们在不同电脑运行脚本时,就会遇到驱动不一致导致脚本无法运行的问题,不同浏览器驱动可能都不同,因此为了统一当前驱动,我们可以使用python的一个库来进行处理,这个库能帮我们安装指定的浏览器驱动Webdriver Manager,我们可以在其中看到使用案例,本次我使用的selenium版本是4

如何使用

安装Webdriver Manager

pip install webdriver-manager

不同浏览器的使用代码

这里只展示了selenium 4 的常用浏览器代码,需要其他浏览器和版本的代码请参考网站Webdriver Manager,在此不记录

Chrome
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
Firefox
# selenium 4
from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
IE
# selenium 4
from selenium import webdriver
from selenium.webdriver.ie.service import Service as IEService
from webdriver_manager.microsoft import IEDriverManager

driver = webdriver.Ie(service=IEService(IEDriverManager().install()))
Edge
# selenium 4
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager

driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()))
Opera
# selenium 3 & 4
from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager

driver = webdriver.Opera(executable_path=OperaDriverManager().install())
Chromium
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromiumService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType

driver = webdriver.Chrome(service=ChromiumService(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install()))
Brave
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as BraveService
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType

driver = webdriver.Chrome(service=BraveService(ChromeDriverManager(chrome_type=ChromeType.BRAVE).install()))

从路径获取浏览器版本

在之前的代码中,我们更新最新的驱动的同时,浏览器可能不支持最新的驱动,因此我们也可以自己指定当前浏览器的版本去自动下载对应版本的驱动

from webdriver_manager.core.utils import read_version_from_cmd, PATTERN
version = read_version_from_cmd("/usr/bin/firefox-bin --version", PATTERN["firefox"])
driver_binary = FirefoxDriverManager(version=version).install()

自动化打开百度

这串代码很简单,只是用来打开百度贴吧网站的,那么我们可以看到浏览器上显示着"Chrome正受到自动测试软件的控制",因为selenium是以最纯净的普通浏览器打开测试

image-20221230162534522

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager


def demo_test():
    driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
    driver.get("https://tieba.baidu.com/index.html")


if __name__ == '__main__':
    demo_test()

浏览器自定义配置拓展

按照上述默认是满足了一般的需求,但是这样会少你需要的数据,或者是有些网站有对selenium进行特殊照顾打不开,因此我们需要对浏览器进行配置,这样可以打开浏览器的时候是可以按照自己拓展的来,我们对浏览器的配置文件的编写可以参照其他人的文章:Selenium之Chrome选项和DesiredcapabilitiesChrome选项

Selenium使用ChromeOptions启动参数,在我们使用Linux系统的时候就需要用到禁止GPU加速,因为我们很多服务器Linux系统都只是使用CPU没有直通GPU,因此可以禁止,在此处我演示下窗口禁止图片加载启动参数配置

首先我们需要先获取到浏览器的信息,在使用add_argument()去拓展自己需要的启动参数,我们可以对ChromeOptions的获取方式进行处理

# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager


def demo_test():
    options = webdriver.ChromeOptions()
    # 禁止图片加载
    options.add_argument('blink-settings=imagesEnabled=false')
    # 无界面模式headless 当其是True的时候就是后台运行模式,默认是False
    # options.headless = True
    driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), chrome_options=options)
    driver.get("https://tieba.baidu.com/index.html")


if __name__ == '__main__':
    demo_test()

在添加了禁止图片加载的启动项后,我们可以看到贴吧的图片都消失了,这样不仅节省了流量,更加快了接口的调用,在我们编写脚本成熟后一般选择不需要打开界面运行,放在后台自己跑即可,那么我们可以在浏览器参数上添加上无界面模式headless

image-20221230162903098

标签:webdriver,浏览器,service,python,selenium,selenium4,import,chrome
From: https://www.cnblogs.com/HeiDaotu/p/17015358.html

相关文章

  • python manage.py loaddata dumpdata 用于导出和导入数据库中的数据
    1.数据导出python manage.py dumpdata pythonmanage.pydumpdata[appname]>appname_data.json 指定appnamde导出指定app的数据(比如appname为cmdb)......
  • pycharm 远程连接Linux,进行python开发
    目前,pycharm是非常受欢迎的编写、调试python的IDE,那么为了方便我们在本地调试远程服务器中的代码,我们可以在pycharm中进行SSH与SFTP的连接,来进行远程服务器的文件添加、修......
  • Python 实现Tracert追踪TTL值
    Tracert命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以获取......
  • Python 检测PE所启用保护方式
    Python通过pywin32模块调用WindowsAPI接口,实现对特定进程加载模块的枚举输出并检测该PE程序模块所启用的保护方式,此处枚举输出的是当前正在运行进程所加载模块的DLL模块信......
  • Python2 Python3 编码问题 操作系统编码 文本编码格式 ansi编码 utf8编码 gb2312
     编码问题: 操作系统编码 文本编码 编程脚本中字节数组转字符串默认使用的编码格式操作系统默认的编码:Windows系统GBK,Linux系统是utf-8。Windows系统也支持utf-8,......
  • Python ssh远程登录设备执行命令
    #-*-encoding:utf-8-*-"""@Time:2022/12/3010:10@Auth:ruqing@File:ssh_sonic.py@IDE:PyCharm@Motto:ABC(AlwaysBeCoding)"""importsys,loggingimporto......
  • 知更鸟主题添加评论者操作系统、浏览器和运营商信息
    第一步、部署文件1、下载show-useragent文件(显示国籍系统浏览器文件)和ip2c文件(显示运营商信息文件)2、解压压缩包,将里面的show-useragent文件夹和ip2c文件夹一并上传到正在用......
  • Python多环境扩展管理
    众所周知,Python发展至今,版本众多,在使用过程中经常遇到第三方库依赖的Python版本和系统Python版本不一致的情况。同时又因系统底层需调用当前版本Python,所以不能随意变更当前......
  • Docker 安装 Python
    Docker安装PythonPython简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由GuidovanRossum于1989年底发明,第一个公开发行版发行于19......
  • pytorch模型onnx部署(python版本,c++版本)
    转载:实践演练BERTPytorch模型转ONNX模型及预测-知乎(zhihu.com)使用bRPC和ONNXRuntime把BERT模型服务化-知乎(zhihu.com)1.安装anaconda一般有图形界面的个人电......