selenium学习(一)

文章介绍了如何使用Python的Selenium库进行Web自动化测试,包括手动下载和使用webdriver_manager自动管理ChromeDriver,以及Chrome浏览器的设置选项,如防止日志输出和设定下载路径。此外,还提及了处理浏览器隐私设置的方法。
摘要由CSDN通过智能技术生成

一、基础介绍

基础介绍可以参考CSDN的其他文章,之前学习的链接我挂一个,很详细,强推selenium用法详解【从入门到实战】【Python爬虫】【4万字】_Dream丶Killer的博客-CSDN博客

二、驱动安装

1.开始的时候未发现webdriver_manager这个库,使用的是最笨的方案,调用时进行联网下载

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

进行下载

(1)使用request进行url的打开然后使用tqdm库进行进度条打印,最后使用get进行获取,下载代码如下,也是参考了一位博主,不过具体忘记是哪个博主

def downloadFromUrl(url, local):
    """
    主要进行文件的下载
    :param url: 下载的url地址
    :param local: 本地存放路径
    :return status,message [str] [str]: 错误码,测试结果信息
    """
    # # 获取文件长度
    try:
        file_size = int(urlopen(url).info().get('Content-Length', -1))
    except Exception:
        return u'0x3101', "错误,访问url: %s 异常" % url

    # 文件大小
    first_byte = os.path.getsize(local) if os.path.exists(local) else 0
    if first_byte >= file_size:
        return u'0x3102', "获取文件大小异常"

    header = {"Range": "bytes=%s-%s" % (first_byte, file_size)}
    pbar = tqdm(total=file_size, initial=first_byte, unit='B', unit_scale=True, desc=url.split('/')[-1])

    # 访问url进行下载
    req = requests.get(url, headers=header, stream=True)
    try:
        with(open(local, 'ab')) as f:
            for size in req.iter_content(chunk_size=1024):
                if size:
                    f.write(size)
                    pbar.update(1024)
    except Exception as e:
        print(e)
        return u'0x3103', "访问{}进行文件下载出现异常".format(url)

    pbar.close()
    return u'0x0000', 'OK'

(2)然后使用zip库对下载文件解压

def unzipFile(src_file, dest_dir, *password):
    """
    主要进行下载文件的解压操作
    :param src_file: 对应的文件的绝对路径
    :param dest_dir: 解压后存放路径
    :param password: 如果有密码则输入
    :return status,message [str] [str]: 错误码,测试结果信息
    """
    if password:
        password = password.encode()
    zf = zipfile.ZipFile(src_file)
    try:
        zf.extractall(path=dest_dir, pwd=password)
    except RuntimeError:
        return u'0x3104', '进行文件解压异常,请确认文件{}是否存在'.format(src_file)
    zf.close()
    return u'0x0000', 'OK'

2.后来发现了webdriver_manager这个官方推荐的库,可以用于驱动管理,从而减少了获取解压等一系列代码

(1)安装webdriver_manager

pip install webdriver_manager

(2)调用webdriver_manager,主要分为chrome、firefox、microsoft,由于刚接触这个库,就先拿edge举例子

其中microsoft.EdgeChromiumDriverManager().install()进行驱动的下载

webdriver为selenium,将driver的路径传入后直接可以调用

web_driver =webdriver.Edge(executable_path=microsoft.EdgeChromiumDriverManager().install())
web_driver.maximize_window()

执行结果如下

 三、浏览器设置的选项

日常使用中由于chrome使用范围最广,所以网上对于chrome设置最全,目前我使用过的选项也仅有其中一部分

options = webdriver.ChromeOptions()
# web_detach为True时防止关闭
options.add_experimental_option("detach", True)
# 用于防止日志在终端刷屏
options.add_experimental_option("excludeSwitches", ["enable-logging", 'enable-automation'])
# download.default_directory 用于指定下载路径
# safebrowsing.enabled 用于跳过谷歌的下载校验,及手动选择保留或者删除
# profile.managed_default_content_settings.image 图片加载
# permissions.default.stylesheet CSS加载
prefs = {"profile.default_content_settings.popups": 0, "download.default_directory": out_path,"safebrowsing.enabled": True, "permissions.default.stylesheet": 1}
options.add_experimental_option("prefs", prefs)

 firefox以及edge目前未使用

from selenium.webdriver.edge.options import Options as EdgeOptions
# edge浏览器设置
from selenium.webdriver import FirefoxOptions
# firefox浏览器设置

edge可以使用之前的库进行选项的获取,msedge库

安装:

pip install msedge-selenium-tools

调用

from msedge.selenium_tools import EdgeOptions
options = EdgeOptions()
options.set_capability("excludeSwitches", ["enable-logging", 'enable-automation'])
webdriver.Edge(executable_path=microsoft.EdgeChromiumDriverManager().install(), capabilities=options)

四、关于浏览器隐私设置

在使用浏览器登录某些页面时会出现隐私问题,如下图

这时就需要对应的处理,可以直接调用selenium输入 thisisunsafe 即可

web_driver.find_elements(By.XPATH, './html').send_keys('thisisunsafe')

也可以通过一个options选项规避

options.add_argument('--ignore-certificate-errors')

edge浏览器无法使用该options选项规避,如果有大佬有方法麻烦提点一下hhh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值