1. Helium 是什么?

Helium 是一款 Web 端自动化开源框架,全称是: Selenium-Python-Helium , 从名字上 就可以看出, Helium 似乎和 Selenium 息息相关

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

确实, Helium 针对 Sel e n i um 进行了 封装 , 它屏蔽了 Selenium 很多实现细节,提供了更加简洁直观的 API,更方便我们进行 Web 端的自动化

官方表示,要实现同样的功能,Helium 相比 Selenium 要少 30% - 50% 的代码

目前, Helium 仅支持 Chrome 和 FireFox

2.优缺点

Helium 主要包含下面 6  个优点:

  • Helium 自带 WebDriver,不需要下载、配置浏览器驱动

  • 内嵌页面 iframe 页面元素直接操作,不需要使用 switch_to.frame() 切换 iframe

  • 窗体管理更方便,可以直接使用窗口标题或部分标题内容来切换窗体

  • 隐式等待 ,针对某个元素执行点击操作,Selenium 如果元素没有出现,脚本会执行失败; 而 Helium 默认最多等待 10s,等待元素出现后立马执行点击操作

  • 显式等待,Helium 提供更加优雅的 API 来等待页面元素出现

  • API 更简洁直观,代码量少

Helium 主要缺点,体现在:

  • 由于封装,屏蔽了很多细节,所以它 不合适二次开发

  • 目前仅支持 Chrome 和 FireFox 浏览器

  • 版本更新慢、遗留 Bug 及文档少

3.准备一下

切换到对应的虚拟环境下,通过 pip 命令安装依赖即可

# 安装依赖
pip3 install helium

接着,我们在 IDE 中,使用 hel ium.__all__  打印出它 包含的 属性及方法

我们发现, Helium 包含的操作动作、控件对象、键盘操作关键字基本覆盖了大部分的自动化操作场景

4.Selenium VS Helium

是骡子是马,拉出来溜溜 ~

接下来,我们以登录 126 邮箱为例,来比较 Selenium 和 Helium

1、传统 Selenium 实现

首先,我们需要下载并配置 WebDriver,然后实例化 WebDriver 对象,打开邮箱登录的主页面

from selenium import webdriver# 实例化Driver
driver = webdriver.Chrome()
# 隐式等待10s
driver.implicitly_wait(10)
# 打开主页面
driver.get(home_url)

通过观察网页元素, 发现输入框区域被包裹在 iframe 内嵌页面中

所以,我们需要使用 switch_to.frame() 函数切换到对应的 iframe,才能操作 iframe 内部的元素

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait# 显示等待打开主页面
wait = WebDriverWait(driver, 10, 0.5)# 切换到对应的iframe,否则无法操作内部元素
wait.until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_xpath('//iframe[contains(@id,"x-URS-iframe")]')))

接着,使用 Selenium API( 这里以 Xpath 为例 )查找用户名和密码输入框、登录按钮;输入用户名和密码,模拟登录操作

# 用户名输入框
element_input = wait.until(EC.visibility_of(driver.find_element_by_xpath('//input[@name="email"]')))
element_input.clear()
element_input.send_keys(username)# 密码输入框
element_password = wait.until(EC.visibility_of(driver.find_element_by_xpath('//input[@name="password"]')))
element_password.clear()
element_password.send_keys(password)# 登录按钮
wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@id="dologin"]'))).click()

最后,通过某个页面元素是否出现来判断是否登录成功

# 找一个登录成功的页面元素
# 通过元素属性+元素值来唯一定位元素
result = True
try:element_recy_email = wait.until(EC.element_to_be_clickable((By.XPATH, '//span[@class="oz0" and contains(text(),"收 信")]')))if element_recy_email:result = Trueelse:result = False
except Exception as e:result = Falseprint("邮箱登陆成功" if result else "邮箱登录失败")

2、Heliu m 实现

接下来,我们通过 Helium 的方式来实现这一操作

首先,我们只需要 2 行代码即可以打开主页

from helium import *# 打开主页
driver = start_chrome(home_url)# 等待元素加载完成
wait_until(Text("你的专业电子邮局").exists)

然后,通过内置 TextField  控件对象及预设文本内容,使用  write  动作输入用户名和密码

# 不需要切换iframe,直接输入
write(username,TextField('邮箱帐号或手机号码'))
write(password,TextField('输入密码'))

值得一提的是, Helium 不需要切换 iframe,可以直接操作内嵌页面元素,简直不要太方便!

接着,模拟点击键盘上的 Enter,完成登录操作

# 模拟点击Enter键登录
press(ENTER)

通过 Helium 内置的 wait_until  方法  + 控件对象,可以显式等待元素出现,默认最长时间为 10s

比如,这里等待登录完成的主页面加载完成,收件箱可以点击,执行一次点击操作

wait_until(Text('收 信').exists)# 点击收件箱
click(Text('收 信'))

最 后,调用  kill_browser()  方法关闭浏览器,结束自动化操作

# 退出
sleep(10)# 关闭浏览器
kill_browser()

需要指出的是, Helium 使用 start_chrome() 方法返回的对象实际上就是 WebDriver 对象,可以结合 Selenium API 一起使用

5.最后

通过上面的对比发现,Helium 相比 Selenium 使用似乎更方便,但是它不适用于一些复杂的页面

因此, 在实际自动化项目中,建议搭配 Selenium 和 Helium 使用,简单的页面使用 Helium,复杂的页面切换到 Selenium

Python 自动化,Helium 凭什么取代 Selenium?相关推荐

  1. python自动化从零开始_从零开始学Selenium自动化测试:基于Python:视频教学版

    前言 第1章 自动化测试基础 1.1 自动化测试简介 1.1.1 自动化测试的定义 1.1.2 自动化测试与手工测试的关系 1.1.3 何时开展自动化测试 1.1.4 自动化测试的优势 1.1.5 自 ...

  2. python自动化(三):selenium微博抢票(含抢票程序设计思路)

    缘起 这个故事起源于女票是一个bjd娃圈爱好者,我才知道在娃圈里经常通过微博私信的方式进行一些商品的交易,例如娃娃的面妆.衣服和娃娃本身,这就引发了抢票需求 流程: 在某一个整的时间点进行微信的私信发 ...

  3. python自动化滑动解锁_Python中Selenium模拟JQuery滑动解锁实例

    滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. 当我手动点击滑块时,改变的只是样式: 1.slide-to-unloc ...

  4. Python 自动化领域起点篇,Selenium WebDriver 学习第1篇

    selenium 项目最早是为测试浏览器.网页开发的,并且广泛应用于爬虫,需要注意 selenium 不是单个软件,它其实由一系列的工具组成. selenium 与 webdriver 是两个项目, ...

  5. python 发布文章,使用Python自动化发布文章:(一)

    # coding:utf-8 #http://www.360doc.com/content/18/0214/20/46745524_729994737.shtml使用Python自动化发布文章:(一) ...

  6. python 滚动条方法_selenium+python 自动化中界面滚动条操作方法

    虽然webdriver提供了操作浏览器的前进和后退的方法,但对于浏览器滚动条并没有提供相应的操作方法,以下使用的方法: 借助JavaScript来控制浏览器的滚动条,webdriver提供了execu ...

  7. python自动化控制运动_Python +selenium自动化帮你预订运动场地

    导语 炎热的夏天,正是换上短裤短裙晒身材的时候.但是,身材不好怎么办?运动是一个选择,特别是像我们程序员行业,天天坐在空调办公室,更应该出出汗,正所谓:冬练三九,夏练三伏. 下班后,约上公司的妹子,打 ...

  8. python自动化测试web页面组成_python+selenium自动化软件测试(第3章):unittest

    3.1 unittest简介 前言 (python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb 密码:9 ...

  9. python自动化--selenium

    python自动化–selenium 一. 思想 selenium 中多个 WebDriver 实例对应一个 chromedriver 进程,一个 chromedriver 进程管理多个 chrome ...

最新文章

  1. 2.登录linun 输入密码登录不进去 进入单用户模式 修改 然后reboot
  2. keil 函数 默认 外部 内部 博客_5.9 C++内部函数与外部函数
  3. buuctf firmware(binwalk和firmware-mod-kit的使用)
  4. Scala中可以定义多个package
  5. python argparse模块详解_python中argparse模块用法实例详解
  6. 【Python】一句话 if else 简洁写法
  7. 在springboot中一些框架和插件的配置
  8. 宏碁台式计算机u盘启动,宏基台式机U盘重装怎么设置U盘启动项
  9. w ndows默认截图工具,windows截图工具快捷键
  10. 向量叉乘公式_向量外积的高中数学运用
  11. 精确率、准确率、召回率、ROC、AUC的概念,计算方式和代码实现
  12. java数据结构与算法总结(二十四)--RoaringBitmap数据结构及原理
  13. 读白帽子讲WEB安全,摘要
  14. 制作ubuntu自定义系统镜像
  15. Couldn’t load custom C++ ops.
  16. 解三元一次方程组的计算机,解三元一次方程组
  17. Unity 湖泊的绘制
  18. Linux 设备树下的 platform 驱动实验基于正点原子IMX6ULL开发板
  19. 金蝶EAS通过第三方系统单点登录
  20. 中国长春西汀市场现状研究分析与发展前景预测报告(2022)

热门文章

  1. mysql-索引操作
  2. jquery-显示隐藏-链式调用
  3. Apache2月9日邮件:Tomcat请求漏洞(Request Smuggling)
  4. 【Spark Summit East 2017】管道泄漏问题:像女士一样在大数据中做个的标记
  5. 集合框架(用LinkedList实现栈结构的集合代码)
  6. 【知识】OpenStack计算设施----Nova
  7. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 线性回归
  8. MySQL面试 - 读写分离
  9. OSX上摆脱vagrant搭建CoreOS集群
  10. DataGrip汉化方法