首页 > 其他分享 >从零开始实现WEB自动化 - 技术选型及简单实践

从零开始实现WEB自动化 - 技术选型及简单实践

时间:2024-10-23 09:18:32浏览次数:3  
标签:WEB 插件 浏览器 js 选型 从零开始 自动化 browser

作为程序员的我们,在工作中应该能明显感觉到,技术选型对整个开发周期尤为重要,选择合适的技术可以帮助我们更高效地完成工作,提高开发速度和质量。

 本篇主要针对开发WEB自动化的技术实现探索

Selenium初探

Selenium是一个用于自动化浏览器操作的工具,可以模拟用户在网页上的操作,包括点击、输入文本、提交表单、获取元素属性等等,它是一个功能强大的工具,可以用于各种需要模拟用户操作的场景。基于此,我们就可以通过Python+浏览器驱动来对我们的WEB网页进行一些自动化操作,同样可以用来执行特定的任务和流程。

Windows下安装Python包

pip install selenium

尝试简单的操作

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#browser = webdriver.Chrome()
browser = webdriver.Edge()
browser.get('https://www.baidu.com/')
kw = browser.find_element(by=By.ID, value='kw')
kw.click()
kw.send_keys('selenium元素定位')
su = browser.find_element(by=By.ID, value='su')
su.click()
time.sleep(5)

以上执行了一个简单百度搜索的流程

驱动Edge浏览器打开窗口,跳转至百度搜索,通过find_element找到输入框元素,点击输入框并输入关键字,找到搜索按钮,等待5秒,执行完成关闭浏览器。

浏览器插件初探

通过了解市面上一些RPA自动化厂商,他们通常会使用浏览器插件,调用浏览器内置API的方式进行WEB的自动化操作,我也简单了解一下实现方式,作为对比优劣势参考。

以的Chrome为示例,下图为目录结果

manifest.json

这是插件的元数据文件,用于定义插件的基本信息,权限,前台页面(如弹出窗口的HTML),以及其他脚本等。

{
  "manifest_version": 2,
  "name": "WEB自动化",
  "short_name": "WEB自动化",
  "description": "WEB自动化插件",
  "version": "1.0.0.0",
  "author": "零冉升起",
  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },
  "content_scripts": [
    {
      "all_frames": true,
      "js": [ "content.js"],
      "matches": [
        "http://*/*",
        "https://*/*"
      ],
      "run_at": "document_start"
    }
  ],
  "browser_action": {},
  "permissions": [
    "tabs",
    "<all_urls>"
  ]
}

background.js

background.js是一种在Chrome插件中使用的JavaScript文件,它充当了插件的后台页面。插件的后台页面负责处理插件的核心逻辑,例如响应用户事件、与浏览器API交互、与其他插件页面通信等。

在background.js文件中,可以定义事件监听器,这些监听器负责处理来自插件的各种事件,例如插件被加载、浏览器启动、标签页被更新等等。

//在当前浏览器打开页签
const tabs_create = function (cfg) {
  return new Promise(function (resolve, reject) {
      try {
          chrome.tabs.create(cfg, (tab) => {
              if (chrome.runtime.lastError) {
                  reject(chrome.runtime.lastError.message);
                  return;
              }
              resolve(tab);
          });
      } catch (e) {
          reject(e);
      }
  });
};
//同步等待
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
//打开并操作
async function func_open_opt(){
	var cfg = {url: 'https://www.baidu.com/'}
	var tab = await tabs_create(cfg);
	console.log('tab', tab)
	await wait(3000) //等待目标页面加载完成
	chrome.tabs.sendRequest(tab.id, {
		'value': 'selenium元素定位'
	}, (response)=>{
		console.log('接收到返回:', response)
	})
}
func_open_opt();

content.js

content.js是一种用于Chrome插件开发的文件类型,用于在网页加载完成后执行脚本操作。在content.js中,可以通过Chrome扩展API来实现对网页的操作,包括修改DOM、发送请求、注入脚本等。

chrome.extension.onRequest.addListener(async function(request, sender, sendResponse){
	console.log('接收到参数:', request)
	document.getElementById('kw').value = request.value
	document.getElementById('su').click()
	sendResponse('成功!')
});

当我们加载进入插件后,就会执行我们在脚本里面定义的流程,这里的流程依旧是简单的百度搜索关键字

以上,便是本系列第一篇文章,后续持续更新,直至完善我们WEB自动化功能,敬请期待~

标签:WEB,插件,浏览器,js,选型,从零开始,自动化,browser
From: https://blog.csdn.net/u010198746/article/details/143144687

相关文章

  • Gradio(二):利用纯python代码创建Web应用最简单的包
    接上文“Gradio:利用纯python代码创建Web应用最简单的包”本文进一步介绍Gradio包的使用。1、多个输入与多个输出当需要多个输入和多个输出时importgradioasgrdefgreet(name,is_morning,temperature):salutation="Goodmorning"ifis_morningelse"Goodeve......
  • 【笔记】CSE 365 - Fall 2024之Talking Web(pwn.college)
    【入门笔记】CSE365-Fall2024之TalkingWeb(pwn.college)先看完level1 使用curl发送HTTP请求curl是一个用于在命令行中与网络进行交互的工具,支持多种协议,如HTTP、HTTPS、FTP等。它可以用来发送GET、POST等请求,下载文件,上传数据,甚至处理API调用。由于其灵活性和广......
  • Vue2 项目实战:打造一个简易倒计时计时器工具 Vue2 实践教程:如何实现一个工作与休息倒
    效果图Vue2倒计时计时器工具教程在本教程中,我们将一步步实现一个Vue2倒计时计时器工具。这个工具允许用户在工作和休息模式之间切换,并设置倒计时时间。倒计时结束时,系统会发出提醒,提示用户切换工作或休息状态。非常适合初学者练习Vue的数据绑定、计算属性和事件处理......
  • WebView2重装/WebView2安装
    问题描述最近运行某些程序时报错TheWebView2processcrashedandtheapplicationneedstoberestarted.解决方法我们只需要重新安装WebView2即可下载WebView2地址如下https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/?form=MA13LH#download下载图中......
  • 基于web的深度学习图像处理界面开发(二)
         现在很多搞算法的人,跑跑代码,比如训练和测试代码搞得飞溜,但想把算法代码打包成一个软件,比如给它包装一个界面,就不会了,一般来说,对使用python的人来说,界面的开发有两种,一种是桌面界面基于qt,另外一种是网页界面基于web。本文的猪脚是基于web开发一个界面。   ......
  • 玄机蓝队靶场_应急响应_25:webshell查杀
    参考:https://blog.csdn.net/administratorlws/article/details/139521078Xterm连接之后看到/var/www有网站,直接下载下来用工具扫扫木马。客户端太拉了,下次直接用河马在线网站扫。找shell.php.提交flag{1}发现不对,河马客户端没给它扫出来。然后乱翻翻到了flag{027ccd04-506......
  • 【Azure Developer】System.Net.WebException: The request was aborted: Could not c
    问题描述在Azure中,使用操作系统为WinServer2019和WinServer2012的虚拟机,同样代码可以链接同一个AzureServiceBus。Win2019成功运行,但是在Win2012上报错:CouldnotcreateSSL/TLSsecurechannel. 问题解答WinServer2012默认不支持TLS1.2,可以通过安装 Update3140245 ......
  • 【Azure Developer】System.Net.WebException: The request was aborted: Could not c
    问题描述在Azure中,使用操作系统为WinServer2019和WinServer2012的虚拟机,同样代码可以链接同一个AzureServiceBus。Win2019成功运行,但是在Win2012上报错:CouldnotcreateSSL/TLSsecurechannel. 问题解答WinServer2012默认不支持TLS1.2,可以通过安装 Update314......
  • 【从零开始的LeetCode-算法】884. 两句话中的不常见单词
    句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。......
  • 【从零开始的LeetCode-算法】3184. 构成整天的下标对数目 I
    给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i<j 且 hours[i]+hours[j] 构成 整天 的下标对 i, j 的数目。整天 定义为时间持续时间是24小时的 整数倍 。例如,1天是24小时,2天是48小时,3天是72小时,以此类推。示例1:......