Python+selenium自动评价器

年年岁岁又一年,为了纪念一哈2020年的最后一天,我决定写下这篇文章。你问我为什么要纪念?因为那天我女朋友加班了...,具体什么任务呢?就是一个指标任务,需要不断的对已完成的业务进行评价。因为31号当天就要完成,所以女朋友加班到8点,ctr操作了三小时,下班后就没有精力陪我了,直接回了家,现在回过头来一想,心里仍有一丝不甘,甚是郁闷,要不是她任务太着急,也不至于我独自跨年。由此我敲下了以下代码,希望对遇见此种情况的各位朋友有所帮助。

评价界面

准备工作

测试截图

已实现功能:窗口置顶、输入编码校验、自动化点击评价、随机填入评价内容、将已输入的编码以及查询到的必要信息追加写入自动生成的excel中。

使用方法

将 chromedriver.exe和自动评价器放在同一文件夹,运行自动评价器

部分代码说明

Python相关库

import tkinter as tk #界面窗口库

from tkinter import messagebox #弹出消息框

#导入selenium库的webdriver以便启动浏览器驱动

from selenium import webdriver

#导入带参启动浏览器库

from selenium.webdriver.chrome.options import Options

import time#导入time等待网页加载时间

import xlwt#导入xlwt写入表格中的内容

import xlrd#导入xlrd读取excel表里的单元格行数

#导入copy模块,程序重新启动实现追加写入excel

from xlutils.copy import copy

import re      #导入re用正则表达式处理数据

import random  #随机函数库

界面窗口参数说明

值得一说:1.输入查询编码时,tkinter的button按钮可以通过布尔表达式传参,并将查询编码送往浏览器的查询输入框,如 “tk.Button(win, text='评价', width=6, command=lambda: inputText(entryInput.get())).place(x=230, y=80)";

2.退出时会拦截,不会立即退出,有消息提示框,并且确认退出后会立即关闭浏览器。

3.后续可能会继续完善,从已经整理好的excel中读取查询编码。

#窗口

def myWindow():

win.title("自动评价器-仅供学习使用")

#设置窗口大小

win.geometry('500x130')

#设置窗口是否可变长、宽,True:可变,False:不可变

win.resizable(width=False, height=False)

win.iconbitmap(r"C:/p.ico")#设置图标

#输入窗口

tk.Label(win, text='评价编码:').place(x=100, y=30)

inputCode = tk.StringVar()

entryInput = tk.Entry(win, width=35, textvariable=inputCode)

entryInput.place(x=160, y=32)

#评价按钮

tk.Button(win, text='评价', width=6, command=lambda: inputText(entryInput.get())).place(x=230, y=80)

#窗口置顶

win.wm_attributes('-topmost',True)

#拦截退出,做出退出提示

win.protocol('WM_DELETE_WINDOW',closeWindow)

win.mainloop()

Selenium配置的浏览器说明

值得一说:1.关于浏览器窗口大小设置,由于评价的页面是手机页面,所以要初始化浏览器窗口大小,网上看了很多方法都是用的 “.set_window_size(xxx,xxx)  方法,用这个方法首先会启动默认窗口大小,再设置成xxx,xxx分辨率,不太和谐,如使用options中的启动配置窗口大小则可避免该问题。

2.如果不想使用者看见浏览器界面可用 “options.add_argument("--headless") “ 进行后台操作。

#浏览器设置

def browserOptions():

# driverfile_path = r'C:\chromedriver.exe'# 驱动文件路径

options = Options()

# options.add_argument("--headless") #设置是否可视化浏览器

#设置浏览器窗口大小

options.add_argument("window-size=500,900")

#屏蔽自动化受控提示 && 开发者提示

options.add_experimental_option("excludeSwitches", ['enable-automation', 'load-extension'])

#启动时加载配置

browser = webdriver.Chrome(chrome_options=options)

browser.get('你的评价网址')#打开浏览器预设网址

time.sleep(1)

return browser

评价代码说明

值得一说:1.善用Selenium定位元素标签,对于没有id属性和class属性的我大都采用的xpth进行定位,xpth不需要完全会,可以用浏览器调试工具右键复制xpth路径,自动生成。

2.文本评价内容我是首先写入一个列表,再用random.choice(text) 方法进行的随机获取,当然你也可以找一本生成的评价文档,从里面获取评价内容。

#评价

def evaluate(code):

#点击满意度评价

for i in range(0,5):

browser.find_elements_by_class_name("tab")[i].click()

# js = "document.getElementsByClassName('tab')["+str(i)+"].click()"

# browser.execute_script(js)#执行js语句

time.sleep(0.5)

#点击我要点赞评价

for i in range(0,7):

browser.find_element_by_class_name("ev_go").find_elements_by_tag_name('span')[i].click()

# js = "document.getElementsByClassName('ev_go')[0].children["+str(i)+"].click()"

# browser.execute_script(js)#执行js语句

#文本评价

text = ["工作人员态度很好,喜欢","不错,工作人员很认真","工作人员很负责","工作人员态度不错",\

"办理时间很快","环境不错,很有秩序","办理过程很愉快","给工作人员点赞","棒棒的,办理太便民了"]

browser.find_element_by_xpath("//*[@id='evalution']/div/div/div[2]/section/div/textarea").send_keys(random.choice(text))

time.sleep(0.5)

#点击提交按钮

browser.find_element_by_xpath("//*[@id='evalution']/div/div/div[5]/button").click()

time.sleep(3)

#获取提示信息

promptText=browser.find_element_by_xpath("/html/body/div[4]/div[2]/div").text

writeExcel(code,promptText)#将数据写入表格

#点击提示框

browser.find_element_by_xpath("/html/body/div[4]/div[3]/button").click()

写入excel代码说明

值得一说:1.我是通过try来捕获异常判断文档是否存在的,如果有异常则新建excel表,如无异常实现追加写入。

2.data = xlrd.open_workbook('已录入数据.xls',formatting_info=True) 中的formatting_info=True可在复制的时候保留格式,之前没开此参数导致追加写入数据的时候出现格式不一致。

#新建excel表,判断表是否存在

try:

data = xlrd.open_workbook('已录入数据.xls')  #打开excel

except :

newExcel()#不存在新建表

#excel样式

def excelStyle(sheet1):

style = xlwt.XFStyle()  # 创建一个样式对象,初始化样式

al = xlwt.Alignment()

al.horz = 0x02      # 设置水平居中

al.vert = 0x01      # 设置垂直居中

style.alignment = al

for i in range(0,5):

sheet1.col(i).width = 255*32 #设置单元格宽度

return style

#新建excel

def newExcel():

workbook = xlwt.Workbook(encoding='utf-8')

sheet1 = workbook.add_sheet("数据")          #新建sheet

style = excelStyle(sheet1)

sheet1.write(0,0,"事项",style=style)      #第1行第1列数据

sheet1.write(0,1,"姓名",style=style)      #第1行第2列数据

sheet1.write(0,2,"身份证号",style=style)   #第1行第3列数据

sheet1.write(0,3,"办件号",style=style)    #第1行第4列数据

sheet1.write(0,4,"提示信息",style=style)    #第1行第4列数据

workbook.save(r'已录入数据.xls')   #保存

# 将所有录入的件存入表格,在评价方法中调用

def writeExcel(code,promptText):

#实现追加写入

data = xlrd.open_workbook('已录入数据.xls',formatting_info=True)  #打开excel

wb = copy(data)                          #利用xlutils.copy下的copy函数复制

sheet1 = wb.get_sheet(0) #获取表单0

nrows = data.sheets()[0].nrows #获取行数

style=excelStyle(sheet1)

#写入事项、姓名、身份证号

for i in range(0,3):

excelText = browser.find_elements_by_class_name("text")[i].text

sheet1.write(nrows,i,excelText,style=style)      #第nrows行第i列数据

sheet1.write(nrows,3,code,style=style)    #写入办件号

sheet1.write(nrows,4,promptText,style=style)    #写入办件号

wb.save(r'已录入数据.xls')   #保存

软件下载

python自动评论_Python+selenium自动评价器相关推荐

  1. python自动评论_python实现博客网站自动评论器

    基本需求 登录博客园 调用评论接口 返回请求结果 确定流程之后,基本就是找突破口的环节了 实际的去评论一下,然后不管你用什么抓包工具都可以,只要抓取到你想要的数据,即可 评论API如下 Request ...

  2. python签到教程_Python实现自动签到

    [toc] 环境准备 Python编译环境 --anaconda安装,一种Python IDE集成环境 selenium --web 的自动化测试工具,第三方类包 webdriver --浏览器web ...

  3. python app自动签到_Python实现自动签到(一)

    环境准备 Python编译环境 --anaconda安装,一种Python IDE集成环境 selenium --web 的自动化测试工具,第三方类包 webdriver --浏览器webdriver ...

  4. python sqlite3事务_python使用上下文管理器实现sqlite3事务机制

    如题,本文记录如何使用python上下文管理器的方式管理sqlite3的句柄创建和释放以及事务机制. 1.python上下文管理(with) python上下文管理(context),解决的是这样一类 ...

  5. 怎么用python自动注册_python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  6. python自动化简历_python+selenium实现简历自动刷新的示例代码

    本文用到的文件的下载地址 百度网盘链接: https://pan.baidu.com/s/1tmpdEfAZKff5TOMAitUXqQ 提取码: e6at 1 安装Python 和 selenium ...

  7. python搜索关键词自动提交_python+selenium实现百度关键词搜索自动化操作

    缘起 之前公司找外面网络公司做某些业务相关关键词排名,了解了一下相关的情况,网络公司只需要我们提供网站地址和需要做的关键词即可,故猜想他们采取的方式应该是通过模拟用户搜索提升网站权重进而提升排名. 不 ...

  8. python搜索关键词自动提交_python+selenium实现自动化百度搜索关键词

    原博文 2019-07-22 14:10 − 通过python配合爬虫接口利用selenium实现自动化打开chrome浏览器,进行百度关键词搜索. 1.安装python3,访问官网选择对应的版本安装 ...

  9. python自动登录百度帐号_python selenium自动登录百度加转窗口

    大概思路: 1.定位到登录界面的名字,密码输入框 2.获取当前窗口句柄 3.打印网页title证明句柄以及装换 from selenium import webdriver import time d ...

最新文章

  1. 【组队学习】【29期】6. 动手学数据分析
  2. 开源Jekyll助您构建你的网站
  3. ios 上传图片失败 小程序_小程序图片自动压缩配置
  4. amazeui学习笔记--css(HTML元素2)--代码Code
  5. 修改Oracle中的某一带有数据的列的数据类型
  6. html 对话框 flatballoon,CSS纯样式实现箭头、对话框等形状
  7. 用赫夫曼树进行文件的压缩
  8. 图像处理-灰度变换函数imadjust和stretchlim
  9. Mysql事务控制语言
  10. 又一个国内知名论坛,突然被全面叫停!
  11. MYSQL-DBA书籍推荐
  12. 运营商进行网络劫持的前生今世+劫持的危害
  13. 用java编写英寸到厘米的转换_java-将英寸转换为英尺和英寸
  14. 怎样开始买基金---我的基金购买体验[转]
  15. congratulation的用法_congratulation用法详解
  16. 论文浏览(42) Action Genome: Actions as Composition of Spatio-temporal Scene Graphs
  17. Java计算税收代码实现
  18. Spring Boot 打包一站式解决方案
  19. 牛人的求职面试经验,很有代表性!
  20. python实现在图片上画框并标注

热门文章

  1. 为什么年薪 50W 是程序员的分水岭?
  2. matlab中scope是什么,matlab中scope
  3. C语言解读assert函数
  4. Java解析银联报文_中国银联8583报文(JAVA)封包/解包/位图 相关操作源代码
  5. iOS 逆向编程(十八)Reveal 详细安装(以及安装问题解决)
  6. windows10 64bit 环境下安装Memcached
  7. 【数学分析】学科简介 ( 初等数学缺陷 | 微分与积分 | 学习数学分析的目的 | 数学分析与高等数学对比 )
  8. java nextintln_「nextint」next()nextLine()以及nextInt()的区别及用法 - seo实验室
  9. leetcode【简单】169、多数元素 / 229、求众数2
  10. 备战金九银十,全网最权威最全面的800+面试题,你值得拥有