Selenium 是浏览器自动化的绝佳工具。使用 Selenium IDE,你可以录制命令序列(如单击、拖动和输入),验证结果并最终存储此自动化测试供日后使用。这非常适合在浏览器中进行活跃开发。但是当你想要将这些测试与 CI/CD 流集成时,是时候使用 Selenium WebDriver 了。

WebDriver 公开了一个绑定了许多编程语言的 API,它允许你将浏览器测试与其他测试集成。这篇文章向你展示了如何在容器中运行 WebDriver 并将其与 Python 程序一起使用。

使用 Podman 运行 Selenium

Podman 是下面例子的容器运行时。有关如何开始使用 Podman 的信息,请参见这篇文章。

此例使用了 Selenium 的独立容器,其中包含 WebDriver 服务器和浏览器本身。要在后台启动服务器容器,请运行以下命令:

$ podman run -d --network host --privileged --name server docker.io/selenium/standalone-firefox

当你使用特权标志和主机网络运行容器时,你可以稍后从在 Python 中连接到此容器。你不需要使用 sudo。

在 Python 中使用 Selenium

现在你可以提供一个使用此服务器的简单程序。这个程序很小,但应该会让你知道可以做什么:

from selenium.webdriver.common.desired_capabilities importDesiredCapabilities

server ="http://127.0.0.1:4444/wd/hub"

driver = webdriver.Remote(command_executor=server,

desired_capabilities=DesiredCapabilities.FIREFOX)

print("Loading page...")

driver.get("https://Fedoramagazine.org/")

print("Loaded")

assert"Fedora"in driver.title

driver.quit()

print("Done.")

首先,程序连接到你已经启动的容器。然后它加载 Fedora Magazine 网页并判断 “Fedora” 是页面标题的一部分。最后,它退出会话。

需要 Python 绑定才能运行此程序。既然你已经在使用容器了,为什么不在容器中这样做呢?将以下内容保存到 Dockerfile 中:

FROM fedora:29

RUN dnf -y install python3

RUN pip3 install selenium

然后使用 Podman 在与 Dockerfile 相同的文件夹中构建容器镜像:

$ podman build -t selenium-python .

要在容器中运行程序,在运行容器时将包含 Python 代码的文件作为卷挂载:

$ podman run -t --rm--network host \

-v $(pwd)/browser-test.py:/browser-test.py:z \

selenium-python python3 browser-test.py

输出看上去像这样:

Loading page...

Loaded

Done.

接下来做什么

上面的示例程序是最小的,也许没那么有用。但这仅仅是最表面的东西!查看 Selenium 和 Python 绑定 的文档。在那里,你将找到有关如何在页面中查找元素、处理弹出窗口或填写表单的示例。拖放也是可能的,当然还有等待事件。

在实现一些不错的测试后,你可能希望将它们包含在 CI/CD 流程中。幸运的是,这是相当直接的,因为一切都是容器化的。

你可能也有兴趣设置 grid 来并行运行测试。这不仅有助于加快速度,还允许你同时测试多个不同的浏览器。

清理

当你容器使用完后,可以使用以下命令停止并删除独立容器:

$ podman stop server

$ podman rm server

如果你还想释放磁盘空间,请运行以下命令删除镜像:

$ podman rmi docker.io/selenium/standalone-firefox

$ podman rmi selenium-python fedora:29

总结

在本篇中,你已经看到使用容器技术开始使用 Selenium 是多么容易。它允许你自动化与网站的交互,以及测试交互。Podman 允许你在没有超级用户权限或 Docker 守护程序的情况下运行所需的容器。最后,Python 绑定允许你使用普通的 Python 代码与浏览器进行交互。

本文由 LCTT 原创编译,Linux中国 荣誉推出

linux网页自动化,使用 Selenium 自动化 Web 浏览器相关推荐

  1. web自动化--python+selenium自动化

    目录 自动化测试用例 遵循原则 自动化测试用例设计 测试点转为测试用例的原则 验证码自动化方法 自动化测试模型 线性测试 模块化驱动测试 数据驱动测试 参数化的方式: CSV文件 Excel文件 关键 ...

  2. 火狐linux版更改语言,Selenium更改firefox浏览器语言python m

    我花了3个小时试图找到这个问题的解决方案,但我还远远没有得到我觉得必须要问的答案.(我发现了类似的帖子-下面是我为什么要问这些帖子的解释) 我正在写一个程序,在谷歌中输入几个搜索词,然后检索我页面的排 ...

  3. Html网页远程控制电脑,如何从Web浏览器远程控制您的计算机 | MOS86

    在移动中,您可能希望连接到您的办公室有几种工具可以让您远程访问计算机,包括使用Gmail.在本文中,我们将讨论一个更强大的解决方案,远程连接到您的计算机,而无需在移动设备上安装任何内容. 如果要完全控 ...

  4. pythonwebui自动化_python+selenium实现web端UI自动化测试

    代码示例:css #!/usr/bin/python # -*- coding: UTF-8 -*- # coding:utf8 import sys import os from selenium ...

  5. 自动化爬虫selenium之操控浏览器

    本文主要讲解操控浏览器的语句,其他教程请点击这里 1.保存页面快照为图片(也就是截图) driver.save_screenshot("imagename.png") 2.从浏览器 ...

  6. web linux 桌面,Ubuntu无桌面进行Web浏览器测试

    主要原理是利用xvfb提供的显卡帧缓冲区,让浏览器以为有桌面 Install xvfb in ubuntu: sudo apt install xvfb cat > /etc/init.d/xv ...

  7. python selenium自动化_python selenium自动化之-环境搭建

    安装python和pip上述文章有介绍,在这里不在赘述.直接安装seleinum pip3 install selenium 安装完成以后, pip3 show selenium 显示 Name: s ...

  8. 【Python selenium自动化环境配置】4步搞定ChromeDriver版本选择

    很多刚做自动化的小伙伴,会在ChromeDriver版本选择时犯难,看来大家都被坑过,真正掌握独门绝技,都不是难事儿. 看好了主要步骤就4部 1.确定谷歌浏览器版本 2.找到谷歌浏览器版本与Chrom ...

  9. Web UI自动化测试之Selenium工具篇

    本文大纲截图: 一.自动化测试介绍 1.基本介绍 1.1 自动化 概念: 由机器设备代替人工自动完成指定目标的过程 优点: 1)减少人工劳动力 2)提高工作效率 3)产品规格统一标准 4)规模化(批量 ...

最新文章

  1. 《Python Cookbook》 最佳译本开放下载啦!
  2. jquery实现倒计时
  3. 关于easyUI在子页面增加显示tabs的一个问题
  4. markdown 流程图_测试了12款Markdown编辑器,推荐一个最好用的!
  5. Python与机器视觉(三)图像保存
  6. potato什么软件_曝光:诈骗数十亿的“张鹏”再出新项目美生在线,诈骗犯都这么努力,你还有什么资格不努力!?...
  7. 4-算法 与7无关的数最近的提交
  8. 一般3d模型代做多少钱_重庆涪陵办一场婚宴一般需要多少钱?婚庆布置报价一般多少钱?...
  9. presto时间戳转字符串
  10. [Contest20180116]随机游走
  11. [转载]敏捷开发,你真的做对了吗?
  12. 国二python考试系统_分享自己的国二python经历
  13. scanf 详解 - 你所不知道的scanf用法
  14. 校验身份证、组织机构代码证、纳税人识别号、营业执照号 的方法
  15. 除了用jenkins,还有什么方法可实现持续集成?
  16. 自动驾驶-YOLOV5目标检测
  17. Android沉浸式
  18. 产品 • B端和C端产品经理有什么区别?
  19. 【backtrader源码解析52】indicators部分代码解读(枯燥,仅供参考,源代码解析结束,后面会增加一个backtrader框架分析)
  20. 路由器wifi信号测试软件,顶级无线路由器信号强度测试(5GHz)_网络设备无线网络和技术-中关村在线...

热门文章

  1. JRE安装出错,显示1603的错误。
  2. SystemUI 剖析
  3. 记一次基于强化学习的有向图搜索
  4. python 定时器 ms_python 定时器,轮询定时器的示例
  5. 模拟斗地主洗牌发牌-JAVA
  6. 原生JS多线程解决方案:Worker
  7. C语言编程代码——因式分解
  8. 图解LeetCode——1184. 公交站间的距离(难度:简单)
  9. 低成本[200元以下]打造分布式WIFI
  10. QCY T1S 蓝牙耳机使用说明