healenium+python+selenium

简介: 上次介绍了如何利用healenium+java+selenium来实现selenium的自愈,这次介绍如何healenium+python+selenium。关于healenium+python+selenium网上资料更少,并且甚至是错误的。在著名的书籍《软件测试权威指南中》也是有一定问题的。现在介绍如下

上次介绍了如何利用healenium+java+selenium来实现selenium的自愈,这次介绍如何healenium+python+selenium。关于healenium+python+selenium网上资料更少,并且甚至是错误的。在著名的书籍《软件测试权威指南中》也是有一定问题的。现在介绍如下。

1.下载并安装postsql,并且建立数据库healenium(注意这个数据库请使用navicat手工建立,不要使用SQL语句建立)。

2.下载selenium-server-4.25.0.jar,由于本文selenium-server与node是在同一台机器上启动的。运行

java -jar selenium-server-4. 25.1.jar hub --port 4444

启动selenium-server,再运行

java -jar selenium-server-4.25.0.jar node --hub http://localhost:4444

注册到节点下。

在浏览器中输入

http://127.0.0.1:4444

出现如图界面。
image.png

记住这里请下载Selenium Grid Console
image.png

3 下载healenium-backend-3.4.8.jar,建立application.properties

# POSTGRESQL Connection Properties for Testcontainers overrided by DynamicPropertyRegistry
spring.datasource.url=jdbc:postgresql://localhost:5432/healenium?currentSchema=public
spring.datasource.username=postgres
spring.datasource.password=123456
spring.liquibase.default-schema=public
spring.jpa.properties.hibernate.default_schema=public
spring.datasource.hikari.schema=public
spring.datasource.hikari.connection-init-sql=SET search_path TO public

运行

java -jar healenium-backend-3.4.8.jar --server.port=7878

4 下载hlm-proxy-2.1.7.jar,建立application.properties

backend.url=http://localhost:7878
healenium.grid=http://localhost:4444

运行

java -jar hlm-proxy-2.1.7.jar

--backend.url=http://localhost:7878 --healenium.grid=http://localhost:4444

5.打开浏览器,输入127.0.0.1: http://localhost:7878/,出现
image.png

打开浏览器,输入127.0.0.1: http://localhost:7878/,出现如图http://127.0.0.1:4444一样的界面。输入http://localhost:8085/status,出现

{
   

"value":

{
   

"ready":

true,

"message":

"Selenium Grid ready.",

"nodes":

[

{
   


  ...

Python代码如下

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class TestWithHealeniumServices(unittest.TestCase):    
    def test_web_application(self):
        chrome_options = Options()
        chrome_options.add_argument("--start-maximized")
        chrome_options.add_argument("--disable-infobars")
        chrome_options.add_argument("--ignore-certificate-errors")
        # 设置基本的能力
        chrome_options.set_capability("browserName", "chrome")
        chrome_options.set_capability("browserVersion", "138.0")  # 请更改为你本地的Chrome版本
        # Healenium 配置
        chrome_options.set_capability("healenium:backup", "true")
        chrome_options.set_capability("healenium:capture", "true")
        chrome_options.set_capability("healenium:initElements", "true")
        chrome_options.set_capability("healenium:recovery-tries", "3")
        chrome_options.set_capability("healenium:score", "0.7")
        try:
            logger.info("正在尝试连接Healenium代理...")
            driver = webdriver.Remote(
                command_executor='http://localhost:8085',
                options=chrome_options
            )
            logger.info("WebDriver会话创建成功!")
            driver.get("http://127.0.0.1:8080/sec/53/")
            logger.info("成功打开页面")
            button = WebDriverWait(driver, 10).until(
                EC.element_to_be_clickable((By.ID, "button"))
            )
            button.click()
            logger.info("按钮点击成功")
        except Exception as e:
            logger.error(f"测试失败: {str(e)}")
            raise
        finally:
            if 'driver' in locals():
                driver.quit()
                logger.info("浏览器已关闭")
if __name__ == "__main__":
    unittest.main()

测试通过,将原文中的id="button",改为id="buttonClick"测试仍旧通过,说明自愈起作用。在这里特别强调,如果一开始

EC.element_to_be_clickable((By.ID, "button"))

写成

EC.element_to_be_clickable((By.ID, "buttonClick"))

测试是通不过的,只有第一次通过,后面自愈能力才会起作用。

写完此文,我觉得现在IT学术界的风气是不是太浮躁了。那么多不能运行的代码铺天盖地,满大街都是,请问,你们在发布之前自己运行过吗?

目录
相关文章
|
3月前
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
5月前
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析
|
12月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
471 5
|
8月前
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
178 1
打造高效的Web Scraper:Python与Selenium的完美结合
|
11月前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
595 6
|
12月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
12月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
Web App开发 测试技术 持续交付
自动化测试的利器:Selenium与Python的完美结合
【9月更文挑战第21天】在软件开发的世界里,测试是确保产品质量的关键步骤。随着敏捷开发和持续集成的流行,自动化测试工具变得尤为重要。本文将介绍如何使用Selenium和Python进行高效的自动化测试,不仅提供代码示例,还深入探讨如何设计测试用例、选择正确的测试框架、以及如何整合到CI/CD流程中。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
194 3
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
247 1
|
数据采集 人工智能 数据可视化
Python selenium爬虫被检测到,该怎么破?
Python selenium爬虫被检测到,该怎么破?
1565 8

推荐镜像

更多