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

目录

一、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()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值