前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化测试工具-Helium

自动化测试工具-Helium

作者头像
wangmcn
发布2022-07-26 17:12:18
2.6K0
发布2022-07-26 17:12:18
举报
文章被收录于专栏:AllTests软件测试

自动化测试工具-Helium

目录

1、前言

2、简介

3、安装

4、第一个脚本

5、常用API

1、前言

现在越来越多的 Web 自动化项目都在使用 Selenium,其特点为提供丰富的 API 功能、支持多语言、多平台等。

与此同时也有很多开源的项目对 Selenium 进行了再次封装,提供更加简洁的 API 功能,比如本篇所要介绍的 Helium。

2、简介

Helium 是用于 Web 自动化的最佳 Python 库。它基于 Selenium-python,为您提供更简单的 API。氦的名字来源于它是一种比硒更轻的化学元素。

在 Selenium 中,需要使用 HTML ID、XPath 和 CSS 选择器来识别网页元素,而 Helium 可以通过用户可见的标签来引用元素,因此,Helium 脚本通常比类似的 Selenium 脚本短30-50%,更重要的是,它们更容易阅读,并且相对于底层网页的更改更稳定。

Helium 只是将 Selenium 进行了包装,所以您可以自由地混合使用这两个库(Helium、Selenium)。

特点:

1、Web 驱动程序管理:Helium 附带了自己的 ChromeDriver 和 geckodriver 副本,因此您无需下载并将它们放在您的 PATH 中。

2、iFrame:与 Selenium 不同,Helium 允许您与嵌套 iFrame 内的元素进行交互,而无需先“切换到”iFrame。

3、窗口管理:Helium 会注意到弹出窗口何时打开或关闭,并像用户一样聚焦/散焦它们,您还可以通过(部分)标题轻松切换到窗口,不再需要遍历 Selenium 窗口句柄。

4、隐式等待:默认情况下,如果您尝试单击带有 Selenium 的元素并且该元素尚未出现在页面上,则您的脚本将失败。默认情况下,Helium 最多等待 10 秒以使元素出现。

5、显式等待:Helium 为您提供了一个更好的 API,用于等待网页上的条件变为真。

Selenium 中,您可以编写:

代码语言:javascript
复制
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myDynamicElement"))
)

使用 Helium,您可以编写:

代码语言:javascript
复制
wait_until(Button('Download').exists)

3、安装

要使用 Helium,需要 Python 3 环境,支持 Chrome 或 Firefox。

打开命令行,输入安装命令即可。

代码语言:javascript
复制
pip install helium

如图所示:

Helium 安装成功,对应版本为 3.0.8。

依赖的 Selenium 对应版本为 3.141.0。

4、第一个脚本

打开命令行,进入 Python 3 环境,之后,依次输入命令:

打开 Chrome 浏览器,跳转到作者博客页面。

代码语言:javascript
复制
from helium import *
start_chrome('https://blog.csdn.net/wangmcn')

如图所示,提示报错:未创建会话:此版本的 ChromeDriver 仅支持 Chrome 版本 99。

之后查询 Chrome 版本为 102。

解决:需要下载对应的 ChromeDriver 版本。

下载地址:

https://chromedriver.chromium.org/downloads

下载对应的版本。

下载完成后,将驱动拷贝到 Python 环境变量所在的路径目录下即可。

例如:

/Library/Frameworks/Python.framework/Versions/3.8/bin

之后再次执行脚本就可以了。

脚本没有报错,并且打开 Chrome 浏览器,跳转到作者博客页面。

之后将脚本完善。

脚本内容:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号:AllTests软件测试

from helium import *
from selenium.webdriver.common.by import By
import time

# 打开Chrome
start_chrome('https://blog.csdn.net/wangmcn')
time.sleep(2)
get_driver().save_screenshot(r'/Users/wangmeng/Desktop/screenshot.png')
time.sleep(2)
click('关注')
time.sleep(2)
go_to('https://www.baidu.com')
time.sleep(2)
write('自动化测试', into='百度一下')
time.sleep(2)
if Text('自动化测试').exists():
    press(ENTER)
time.sleep(2)
kill_browser()

# 打开Firefox
driver = start_firefox('https://www.baidu.com')
time.sleep(2)
driver.find_element(By.ID, 'kw').send_keys('Selenium')
time.sleep(2)
driver.find_element(By.ID, 'su').click()
time.sleep(2)
driver.quit()

第一段操作 Chrome 使用了 Helium 的 API 方法,第二段操作 Firefox 则使用原生的 Selenium 的 API 方法。

5、常用API

1、引入 helium 模块

代码语言:javascript
复制
from helium import *

2、操作 Chrome

代码语言:javascript
复制
# 启动Chrome
start_chrome()

# 打开一个URL
start_chrome('baidu.com')

# 无头模式启动Chrome
start_chrome(headless=True)
start_chrome('baidu.com', headless=True)

# 高级配置,可使用选项或功能参数
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_argument('--proxy-server=127.0.0.1:5678')
start_chrome(options=options)

from selenium.webdriver import DesiredCapabilities
capabilities = DesiredCapabilities.CHROME
capabilities["pageLoadStrategy"] = "none"
capabilities["goog:loggingPrefs"] = {'performance': 'ALL'}
start_chrome(capabilities=capabilities)

# 终止(关闭)浏览器
kill_browser()

3、操作 Firefox

代码语言:javascript
复制
# 启动Firefox
start_firefox()

# 打开一个URL
start_firefox('baidu.com')

# 无头模式启动Firefox
start_firefox(headless=True)
start_firefox('baidu.com', headless=True)

# 高级配置,可使用options参数
from selenium.webdriver import FirefoxOptions
options = FirefoxOptions()
options.add_argument("--width=2560")
options.add_argument("--height=1440")
start_firefox(options=options)

# 终止(关闭)浏览器
kill_browser()

4、在当前浏览器中打开指定的 URL

代码语言:javascript
复制
go_to("baidu.com")

5、输入

代码语言:javascript
复制
write("Hello World!")
write("admin123456", into="Username:")
write("Meng", into=Alert("Please enter your name"))

6、键盘操作

代码语言:javascript
复制
press('a')
press('A')
press(ENTER)
press(CONTROL + 'a')

7、点击(给定的元素或点)

代码语言:javascript
复制
click("登录")
click(Button("OK"))
click(Point(200, 300))
click(ComboBox("File type").top_left + (50, 0))

8、双击(给定的元素或点)

代码语言:javascript
复制
doubleclick("双击确认")
doubleclick(Image("Directories"))
doubleclick(Point(200, 300))
doubleclick(TextField("Username").top_left - (0, 20))

9、拖动给定元素或指向给定位置

代码语言:javascript
复制
drag("Drag me!", to="Drop here.")

10、查找给定 GUI 元素谓词的所有匹配项

代码语言:javascript
复制
find_all(Button("Open"))
find_all(Window())
find_all(TextField("Address line 1"))

11、将页面向下滚动给定的像素数

代码语言:javascript
复制
scroll_down(num_pixels=100)

12、将页面向上滚动给定的像素数

代码语言:javascript
复制
scroll_up(num_pixels=100)

13、将页面向右滚动给定的像素数

代码语言:javascript
复制
scroll_right(num_pixels=100)

14、将页面向左滚动给定的像素数

代码语言:javascript
复制
scroll_left(num_pixels=100)

15、将鼠标光标悬停在给定的元素或点上

代码语言:javascript
复制
hover("文件大小")
hover(Button("OK"))
hover(Link("下载"))
hover(Point(200, 300))
hover(ComboBox("File type").top_left + (50, 0))

16、右键单击(在给定的元素或点上)

代码语言:javascript
复制
rightclick("文件")
rightclick(Point(200, 300))
rightclick(Image("验证码"))

17、从组合框中选择一个值

代码语言:javascript
复制
select("语言", "中文")
select(ComboBox("语言"), "中文")

18、拖拽文件到给定元素上

代码语言:javascript
复制
click("邮件")
write("wangmcn@163.com", into="To")
write("Email subject", into="Subject")
drag_file(r"C:\Documents\notes.txt", to="附件")

19、将文件附加到文件输入元素

代码语言:javascript
复制
attach_file("c:/test.txt", to="请选择文件")

20、刷新当前页面

代码语言:javascript
复制
refresh()

21、等到给定的条件函数结果为真时

代码语言:javascript
复制
wait_until(Text("Finished!").exists)

22、设置隐式等待

代码语言:javascript
复制
Config.implicit_wait_secs = 0

23、警报框

代码语言:javascript
复制
# 确定
Alert().accept()

# 取消或关闭
Alert().dismiss()

24、坐标点击

代码语言:javascript
复制
Point(x=10, y=25)

25、切换到给定的浏览器窗口

代码语言:javascript
复制
switch_to("baidu")
switch_to(find_all(Window())[0])

26、截图

代码语言:javascript
复制
get_driver().save_screenshot(r'C:\screenshot.png')
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档