第19章:python自动化——ChromeOptions与WebUI实操

2023-11-15

目录

一、ChromeOptions设置项

二、WebUI实操


一、ChromeOptions设置项

浏览器在启动之初,如果需要对浏览器进行一些特定内容的定义,可以直接通过浏览器的options类来实现相对应的配置内容。不同的浏览器有不同的options,chrome对应的就是ChromeOptions类。

ChromeOptions类没有任何技术含量在。options设置项有非常多。不需要去死记硬背,因为记不下来。常态化都会是写好一个options类,带着走。对于特殊的设置项,可以需要用到什么就百度搜索什么即可。

如何辨别你查找的options类是有效的?

通过一个指令来看:

# 支持python2.7的ChromeOptions内容:这个版本已经无效了。
driver1 = webdriver.Chrome(chrome_options=options)

 下面才是有效的:

# 支持python3.7的ChromeOptions内容
driver1 = webdriver.Chrome(options=options)

将chrome浏览器的常用配置进行封装,便于后续driver对象的调用:

from selenium import webdriver


def options():
    options = webdriver.ChromeOptions()

    # 页面加载策略
    options.page_load_strategy = 'normal'

    # 窗体最大化
    options.add_argument('start-maximized')

    # 指定浏览器的启动坐标
    # options.add_argument('window-position=500,500')

    # 指定浏览器的窗体大小
    # options.add_argument('window-size=1200,800')

    # 去掉浏览器的自动化黄条:目前的阶段下已经不是那么有需要的了。
    options.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])

    # options.add_experimental_option('disable-infobars')   # 只限于python2.7的版本有效,现在已经失效

    # 无头模式:不在桌面生成浏览器的运行,浏览器作为后台程序,静默后台运行。虽然无法肉眼看到,但实际上一切照旧,该运行的依旧会正常运行。可以减少测试设备的资源损耗。一般可用于持续集成中,虽然有可能出现错误。
    # options.add_argument('--headless')

    # 去掉账号密码保存弹窗
    prefs = {
        'credentials_enable_service': False,
        'profile.password_manager_enable': False
    }
    options.add_experimental_option("prefs", prefs)


    # 加载本地缓存信息:Selenium默认启动的浏览器是不会加载本地缓存的。
    '''
        1. 该功能可以实现验证码的绕过,但前提条件是需要提前手动登录一次(只对可以记住登录状态的网站有效)。
        2. 该功能可以起到一定程度的反爬效果,具体根据被访问系统的反爬机制而决定
        3. 该功能的使用,只能够在一个浏览器生效,如果在启动之前开启有其他的chrome浏览器,则该功能无法生效,会报错。一定要关闭所有浏览器以后再运行webdriver
    '''
    # 自动化测试不会处理验证码,因为验证码本身就是防止自动化脚本的。
    # options.add_argument(r"--user-data-dir=C:\Users\15414\AppData\Local\Google\Chrome\User Data")

    # 启动隐身模式
    # options.add_argument('incognito')

    # 去除控制台多余的信息:避免掉无用的信息内容
    # options.add_experimental_option('excludeSwitches', ['enable-logging'])

    # 去除控制台多余的信息手段二
    options.add_argument('--log_level=3')
    options.add_argument('--disable-gpu')
    options.add_argument('--ignore-certificate-errors')

    # 返回options对象
    return options

如果需要设置其他的选项,可以在网上搜索添加。

二、WebUI实操

下面是以商城项目为例,实现自动化购物的整个流程:

'''
    fecmall从登陆到下订单进行购买的完整流程:
        1. 用户登录
        2. 商品的选择
        3. 商品的下单购买
        4. 校验购买是否成功
'''
from time import sleep

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select

import class17.options as opt

# 创建浏览器对象
driver = webdriver.Chrome(options=opt.options())
# 隐式等待5秒
driver.implicitly_wait(5)
# 访问fecmall的登录页
driver.get('http://hcc.fecmall.com/customer/account/login')
#  登录
driver.find_element('id', 'email').send_keys('2314419713@qq.com')
driver.find_element('id', 'pass').send_keys('hzp123456')
driver.find_element('id', 'js_registBtn').click()
# 进入商品详情页
ActionChains(driver).move_to_element(driver.find_element('link text', '婚礼')).perform()
driver.find_element('link text', '婚礼礼服').click()
driver.find_element('xpath', '//img[contains(@data-original,"12229472_1.jpg")]').click()
# 选择商品属性
driver.find_element('xpath', '//img[contains(@src,"3147185361598497.jpg")]').click()
driver.find_element('name', 'qty').clear()  # 清空当前输入框的默认值:如果输入框有默认值一定要记得先清空,不然输入的内容可能会有问题
driver.find_element('name', 'qty').send_keys(5)
driver.find_element('id', 'js_registBtn').click()
# 下单支付
driver.find_element('xpath', '//button[@title="Proceed to Checkout"]').click()
# 添加收货地址信息
driver.find_element('id', 'billing:telephone').send_keys('18973404302')
driver.find_element('id', 'billing:street1').send_keys('自动化测试')
driver.find_element('id', 'billing:street2').send_keys('我的家里')
# 收货地址的国家select标签
country = Select(driver.find_element('id', 'billing:country'))
# 设置为中国
country.select_by_visible_text('China')
sleep(1)
# 收货地址省select标签
state = Select(driver.find_element('xpath', '//select[@id="address:state"]'))
state.select_by_value('HUN')
driver.find_element('id', 'billing:city').send_keys('长沙')
driver.find_element('id', 'billing:zip').send_keys('421001')
# 订单支付
driver.find_element('link text', '支付订单').click()

# 断言校验支付是否成功
reality = driver.find_element('xpath', '//h2[@class="sub-title"]').text
assert '您的订单已收到,感谢您的购买!' == reality, '购买失败'
sleep(5)
# 关闭浏览器
driver.quit()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第19章:python自动化——ChromeOptions与WebUI实操 的相关文章

随机推荐

  • mingw64镜像网站

    mingw64镜像网站 http files 1f0 de mingw
  • UIBOT的简单使用

    最近项目上使用到一个新的技术软件 刚一阶段使用结束 用来记录下 首先我们了解下UIbot 这里我直接放上下载社区版本的官方地址 来也科技RPA AI智能自动化平台 助力政企实现智能时代的人机协同 首先需要用邮箱注册 然后直接安装社区版本 这
  • 【毕设教程】FCM模糊聚类算法

    文章目录 0 前言 1 如何理解模糊聚类 2 模糊C means聚类算法 3 FCM算法原理 4 Python FCM支持 4 1 安装相关库 4 2 skfuzzy cmeans函数说明 4 3 代码实现 4 4 运行结果 5 FCM算法
  • C++stringstream的简单介绍以及使用

    在C语言中 如果想要将一个整形变量的数据转化为字符串格式可以使用以下两种方式 1 itoa 函数 2sprint 函数 但是两个函数在转化时 都得需要先给出保存结果的空间 那空间要给多大呢 就不太好界定 而且转化格式不匹配时 可能还会得到错
  • matlab打开视频文件并提取颜色数据

    目标 实现加载任意视频文件 并按帧取指定图像区域的某颜色值代表该区域的颜色值 1 加载视频文件 加载视频文件使用函数VideoReader 输入为文件夹路径 返回为一个VideoReader对象 具体使用方法见创建对象以读取视频文件 MAT
  • 离散数学主析取范式及主合取范式

    今天总结了一下关于离散数学化简主析取范式以及主合取范式的一些方法 首先一般可能会用到 分配律 A B C lt gt A B A C A B C lt gt A B A C 其次若化简式里有蕴涵符号 则可以用 蕴涵等值式 A B lt gt
  • 数据清洗、数据挖掘常见十大问题

    数据清洗 数据挖掘常见十大问题 一 数据预处理 数据清洗和特征工程 二 数据预处理和特征工程阶段 最常见的10个问题 1 什么是数据 EDA 2 缺失值的处理方式有哪些 3 如何检测异常数据 如何处理 4 什么是特征工程 有什么作用 5 特
  • 【Spring】数据导出为Excel的接口报java.io.IOException: UT010029: Stream is closed错误

    数据导出为Excel的接口报java io IOException UT010029 Stream is closed错误 实习时导师让写一个平台信息导出为Excel的功能 写完之后发现文件正常导出 但控制台一直报Stream is clo
  • react中使用less和全局样式

    前言 使用create react app脚手架搭建的react项目 会自带css和sass 但是没有less 如果在项目中需要使用less 需要进行下载并进行一些配置 1 配置 1 暴露webpack配置文件 create react a
  • 解决 in ./node_modules/cesium/Source/ThirdParty/zip.js报错

    由于在 node modules cesium Source ThirdParty zip js 文件中使用了 import meta 语法 webpack 默认不支持 在进行项目构建时 会报如下错误 提示信息需要添加 loader 接下来
  • 谷歌浏览器配置微信浏览器_使用Chrome修改user agent模拟微信内置浏览器

    很多时候 我们需要模拟微信内置浏览器 今天教大家用chrome简单模拟 如图设置 F12或者右键审查元素进入开发者模式 点击Emulation 然后点击Network 把Spoof user agent改成Other 并把下面的带复制进去
  • PaddleSpeech调研、安装、使用

    PaddleSpeech概述 PaddleSpeech asr 模块目前只支持中英文的语音自动识别 建议在Linux环境下安装和使用 配置环境要求 gcc gt 4 8 5 paddlepaddle gt 2 4 1 python gt 3
  • 概率论与数理统计

    目录 一 概率论的基本概念 1 1 概率论的直观解释和数学定义 1 2 条件概率与乘法公式 1 3 全概率公式与贝叶斯公式 1 4 事件的独立性 二 随机变量与分布函数 2 1 随机变量与分布函数 2 2 离散型随机变量和常用分布 2 3
  • 定时任务——Cron表达式详解

    Cron表达式是一个字符串 字符串以5或6个空格隔开 分为6或7个域 每一个域代表一个含义 Cron有如下两种语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Secon
  • C++ : 在一个string字符串中查找给定的字符串并提取

    C 在一个string字符串中查找给定的字符串并提取 1 string find last of 返回类型 size t 2 string find first of 返回类型 size t 3 string substr size t a
  • 力扣刷题-面试题 17.13. 恢复空格、字典树、前缀树的应用

    基本概念 Trie 树 又称单词查找树 前缀树 是一种树形结构 典型应用是用于统计 排序和保存大量的字符串 但不仅限于字符串 它的优点是 利用字符串的公共前缀来减少查询时间 最大限度地减少无谓的字符串比较 比哈希表更快 基本性质 根节点不包
  • 正负样本分配策略(OTA, SimOTA,TAS)

    文章目录 OTA SimOTA TAL ATSS OTA 论文 OTA Optimal Transport Assignment for Object Detection 代码 Megvii BaseDetection OTA 标签分配算法
  • c++静态代码扫描工具clang-tidy详细介绍

    clang tidy 文章目录 clang tidy 1 什么是clang tidy 2 clang tidy可以解决什么问题 3 工作原理 4 如何使用clang tidy 4 总结 5 举例说明 1 什么是clang tidy Clan
  • 十五年学不会英语的原因

    学习前预热 轻松学英语第一步 建立英语思维 为什么大家学英语学得这么累 最后依然对英语糊糊涂涂 原因只有一个 就是我们的学习能力太差了 我们的老师太笨了 这篇文章主要是给大家讲英语的基本结构 看了这篇文章 你们会突然就明白 英语怎么会如此简
  • 第19章:python自动化——ChromeOptions与WebUI实操

    目录 一 ChromeOptions设置项 二 WebUI实操 一 ChromeOptions设置项 浏览器在启动之初 如果需要对浏览器进行一些特定内容的定义 可以直接通过浏览器的options类来实现相对应的配置内容 不同的浏览器有不同的