浏览器自动化程序

virtualenv

  • virtualenv

1 virtualenv简介
是专门用来为应用程序维护多套相互“隔离”的Python运行环境的工具,借助 virtualenv我们可以在一台主机上创建多套相互隔离的Python运行环境。
所以呢需要下载好我已经配置好的虚拟环境才能正常运行下面的程序。
2 .virtualenv的配置
python环境是python3.7,需要用到的库文件pyqt5,pyqt5-tools,playwright,os
浏览器的驱动文件
如果已经安装了python环境,则直接执行 python -m playwright install,否则需要先进入虚拟环境再执行上面的命令。

使用教程

  1. 在百度网盘下载virtualenv环境和exe程序,解压,里面有两个文件
  2. 按照路径新建文件夹D:\python\virtualenv\(必须一模一样),因为我用的配置有些是绝对路径,不然读不到配置文件。把demo文件放到这个目录下
  3. 最后打开main.exe就能使用了

1录制自动化脚本,只要输入对应的网址和浏览器(现在只支持谷歌),点击star按键即可,后续更新会解决这个问题(调试的时候火狐,webkit等有一定的bug)。然后就可以按照自己的想法录制步骤,右边是自动生成的python代码。录制完成后就可以关闭浏览器。最后就会生成一个code.txt文件。

2运行脚本。首先把生成的code文件的后缀改为py,然后在脚本输入框输入**py文件的绝对路径 **,点击start__script。就会执行自动化脚本

上代码

"""
brower.py文件
"""
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'brower_automation.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgets
import osclass Ui_MainWindow(object):def __init__(self):self.url = "www.baidu.com"def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(563, 326)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(270, 10, 301, 101))self.label.setObjectName("label")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(120, 70, 101, 21))self.pushButton.setObjectName("pushButton")self.pushButton.clicked.connect(self.start_PushBotton)self.radioButton = QtWidgets.QRadioButton(self.centralwidget)self.radioButton.setGeometry(QtCore.QRect(30, 90, 89, 16))self.radioButton.setObjectName("radioButton")self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)self.radioButton_2.setGeometry(QtCore.QRect(30, 70, 89, 16))self.radioButton_2.setObjectName("radioButton_2")self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget)self.radioButton_3.setGeometry(QtCore.QRect(30, 50, 89, 16))self.radioButton_3.setObjectName("radioButton_3")self.radioButton_3.setChecked(True)self.ShowText = QtWidgets.QTextBrowser(self.centralwidget)self.ShowText.setGeometry(QtCore.QRect(20, 210, 521, 111))self.ShowText.setObjectName("ShowTesx")self.ShowText.setPlaceholderText("""Prompt information:open page and generate code for user actionsOptions:-o, --output <file name>  saves the generated script to a file--target <language>       language to use, one of javascript, python, python-async, csharp (default: "python")-h, --help                display help for commandStatus operation information:""")self.Show_Label = QtWidgets.QLabel(self.centralwidget)self.Show_Label.setGeometry(QtCore.QRect(240, 180, 101, 31))self.Show_Label.setObjectName("Show_Label")self.scrupt_a = QtWidgets.QLabel(self.centralwidget)self.scrupt_a.setGeometry(QtCore.QRect(30, 150, 101, 31))self.scrupt_a.setObjectName("scrupt_a")self.script_lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.script_lineEdit.setGeometry(QtCore.QRect(100, 155, 200, 20))self.script_lineEdit.setObjectName("script_lineEdit")self.scriptButton = QtWidgets.QPushButton(self.centralwidget)self.scriptButton.setGeometry(QtCore.QRect(350, 155, 101, 21))self.scriptButton.setObjectName("scriptButton")self.scriptButton.clicked.connect(self.start_script)self.url = QtWidgets.QLabel(self.centralwidget)self.url.setGeometry(QtCore.QRect(30, 20, 51, 21))self.url.setObjectName("url")self.url_lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.url_lineEdit.setGeometry(QtCore.QRect(90, 20, 141, 21))self.url_lineEdit.setObjectName("url_lineEdit")self.url_lineEdit.setPlaceholderText("https://www.baidu.com/")  # 默认显示self.brower = QtWidgets.QLabel(self.centralwidget)self.brower.setGeometry(QtCore.QRect(30, 120, 54, 16))self.brower.setObjectName("brower")self.brower_lineEdit = QtWidgets.QLineEdit(self.centralwidget)self.brower_lineEdit.setGeometry(QtCore.QRect(90, 120, 141, 21))self.brower_lineEdit.setObjectName("brower_lineEdit")self.brower_lineEdit.setPlaceholderText("默认开启的是谷歌浏览器")MainWindow.setCentralWidget(self.centralwidget)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.actionpyton = QtWidgets.QAction(MainWindow)self.actionpyton.setObjectName("actionpyton")self.actionyes = QtWidgets.QAction(MainWindow)self.actionyes.setObjectName("actionyes")self.actionno = QtWidgets.QAction(MainWindow)self.actionno.setObjectName("actionno")self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.get_url()def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "浏览器自动化"))self.label.setText(_translate("MainWindow","<html><head/><body><p>注意事项:</p><p>1.必须有python3.7+的环境</p><p>2.安装Chromiun、Firefox、Webkit等浏览器的环境</p><p><a href=\"D:\\img\"><span style=\" text-decoration: underline; color:#0000ff;\">3.详细的使用文档</span></a></p></body></html>"))self.pushButton.setText(_translate("MainWindow", "start"))self.scriptButton.setText(_translate("MainWindow", "start_script"))self.radioButton.setText(_translate("MainWindow", "webkit"))self.radioButton_2.setText(_translate("MainWindow", "firefox"))self.radioButton_3.setText(_translate("MainWindow", "chrome"))self.Show_Label.setText(_translate("MainWindow","<html><head/><body><p><span style=\" font-size:10pt;\">信息提示框</span></p></body></html>"))self.scrupt_a.setText(_translate("MainWindow","<html><head/><body><p><span style=\" font-size:11pt;\">脚本路径</span></p></body></html>"))self.url.setText(_translate("MainWindow","<html><head/><body><p><span style=\" font-size:12pt;\">URL</span></p></body></html>"))self.brower.setText(_translate("MainWindow","<html><head/><body><p><span style=\" font-size:12pt;\">浏览器</span></p></body></html>"))self.actionpyton.setText(_translate("MainWindow", "pyton"))self.actionyes.setText(_translate("MainWindow", "yes"))self.actionno.setText(_translate("MainWindow", "no"))def radio_status(self):"""包含了所有的浏览器,默认是谷歌浏览器问题:1.浏览器的驱动是否安装;2.浏览器驱动的名字没有确认"""if self.radioButton_3.isChecked() is True:return "chromium"elif self.radioButton_2.isChecked() is True:return "Firefox"elif self.radioButton.isChecked() is True:return "webkit"else:return self.brower_lineEdit.text()def get_url(self):if len(self.url_lineEdit.text()) > 0:url = self.url_lineEdit.text()return urlurl = "https://www.baidu.com/"return urldef start_PushBotton(self):url = self.radio_status()brower = self.get_url()os.chdir("D:")os.system(r"D:\python\virtualenv\demo\Scripts\activate | python -m playwright codegen --target python -o 'code.py' -b {} {}".format(url, brower))def start_script(self):python_script = self.script_lineEdit.text()os.system("D:")os.system(r"D:\python\virtualenv\demo\Scripts\activate | python {}".format(python_script))
"""
main.py文件
"""
import sysimport brower
from PyQt5.QtWidgets import QApplication, QMainWindowif __name__ == '__main__':app = QApplication(sys.argv)MainWindow = QMainWindow()ui = brower.Ui_MainWindow()ui.setupUi(MainWindow)MainWindow.show()sys.exit(app.exec_())

根据上面装好相应的环境直接运行就可以了pyqt5, playwright, pyqt5-tools,还有各种浏览器的驱动。强烈建议使用第二种方法,直接粘贴代码,百分之九十都可以成功运行。

如有疑问或需数据请联系作者可留言博客或+
qq:1769190045

文章内容只供参考学习阅读,不可他用(特别商用)。侵权必追究其法律责任

——————————部分内容参考他人博客文章—————————————

浏览器自动化(python)相关推荐

  1. python 浏览器自动化_Python利用splinter实现浏览器自动化操作方法

    利用Splinter开发浏览器自动化操作,编写代码比较简单. 案例一: from splinter import Browser with Browser() as browser: # Visit ...

  2. ChromeDriver/Selenium/Python浏览器自动化初体验

    目录 ChromeDriver安装 Selenium安装 Python脚本 ChromeDriver安装 在浏览器地址栏输入,查看chrome当前版本: chrome://version 在浏览器地址 ...

  3. [转载] 使用selenium_一日一技:使用Selenium的浏览器自动化

    参考链接: 使用Selenium的浏览器自动化 Selenium是用于通过程序控制Web浏览器的强大工具. 它适用于所有浏览器,可在所有主要操作系统上运行,并且其脚本以各种语言(即Python,Jav ...

  4. 微软开源的浏览器自动化工具-Playwright

    软开源了一个 Python 项目:Playwright,从此又多了一个浏览器自动化工具.之前一直用 selenium 或 splinter. Playwright 可通过单个 API 自动执行 Chr ...

  5. 浏览器自动化的一些体会8 访问angular页面的一个问题

    发现浏览器自动化有一个重要方面没有提及,即所谓的无页面浏览器,不过最近没有需求,不想尝试,先记上一笔,以后有需求时,可以有个思路. 大约一两个月前(现在比较懒散,时间不知不觉过去,连今天是几号有时候都 ...

  6. python处理csv文件案例_让繁琐的工作自动化——python处理CSV文件

    让繁琐的工作自动化--python处理CSV文件 CSV:CSV文件是一种简化的电子表格,不同于Excle(二进制文件),CSV是纯文本文件. 1.环境 python3.8 pycharm2020.1 ...

  7. 浏览器自动化操作标准--WebDriver

    WebDriver是一个浏览器远程控制协议,是一个既定标准,它本身的内容非常丰富,本文不可能全部介绍,本文仅粗略带大家了解一下WebDriver的部分内容以及一个小的实际应用.想深入了解的请参考W3C ...

  8. json 插入数据_让繁琐的工作自动化——python处理JSON文件

    让繁琐的工作自动化--python处理JSON文件 不得不说,python真TMD香.由于python解析json过于简洁,我只好写个实例了,不然文章太短. 1.环境 python3.8 pychar ...

  9. 太肝了,挑战扫雷世界纪录:扫雷自动化Python+OpenCV实战(附迪迦250G人工智能学习资料)

    咱们废话不多说,先看成果~ 中级 - 0.74秒 3BV/S=60.81 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第一.世界综合排名 ...

  10. 在浏览器中用Python做数据科学:Pyodide

    Pyodide 是Mozilla的一个实验性项目,用于创建一个完全在浏览器中运行的完整的Python数据科学技术栈. Pyodide的动机来自于Mozilla的另一个项目 Iodide的工作,在早先的 ...

最新文章

  1. Xamarin Anroid开发教程之验证环境配置是否正确
  2. Linux centos修改用户所属组的方法
  3. 硬核 | 关于Linux内核的简明知识
  4. 微信改成右滑删除_手机文件数据恢复,怎样恢复已过期的微信附件呢?
  5. vb.net datetimepicker月到当日的天数_【坦克世界】11月10日个人专属优惠商店限时开放...
  6. JSF 源代码赏析之FacesServlet
  7. 送你一个Python 数据排序的好方法
  8. ServicePointManager.ServerCertificateValidationCallback 冲突的解决
  9. 如何使用PowerShell从SQL Server数据创建图表
  10. 用vector编写一个矩阵模板
  11. 互联网协议入门(网络分层)
  12. DVBS卫星识别流程
  13. linux sniffer 程序使用,Linux下Sniffer程序的实现
  14. [Recap] Huobi GitChat Meetup
  15. 迅雷种子为什么php文件后缀,迅雷BT文件后缀是什么?
  16. 德日车企瓜分美系车在华市场
  17. 制表软件带动办公软件市场新火爆
  18. MySQL数据库性能优化--数据分库分表
  19. oracle应付创建会计科目,R12 应付创建会计科目警告【已解决】
  20. Opencv inRang() 和HSV色彩空间表

热门文章

  1. STM32入门之电路基础
  2. 微信小程序在线旅游信息管理+后台管理系统
  3. 关于《ADS-B点迹数据质量控制散及基础预警算法和实现流程》
  4. 桌面壁纸被计算机管理员禁用,Win7更改桌面壁纸时出现“此功能已被禁用”如何解决...
  5. 一个高难度的 Java 3D 智力游戏,立方四子棋
  6. linux下ant安装和使用教程,ant安装与简单应用
  7. Lua教程(二):C++和Lua相互传递数据示例
  8. Visual FoxPro权威指南pdf
  9. 【应用软件】用jpg+swf制作gif动感小图(附带AVI转gif技巧)
  10. 一种pluntUML实时渲染图片的方法