基于selenium的UI自动化实践
2023-02-26 09:47:59 时间
1、需求说明
实现的需求是:获取某个博主博客的文章标题,然后把获取的标题内容保存到excel中
2、实现目的
适用于刚开始学习seleniumUI自动化的人,建立对UI自动化的基本认知
3、特殊说明
后续代码只是来获取博主文章的标题,并无其它风险,所以不存在安全问题
4、环境搭建
详细参考:WebUI自动化环境搭建
5、实现思路
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import re
import xlsxwriter
driver = webdriver.Chrome() # 打开Chrome浏览器
driver.get("https://blog.csdn.net/xxxxxx") # 进入博客首页,这里是csdn博客,xxxxx是博主昵称
time.sleep(1)
driver.maximize_window() # 最大化窗口
# 获取博客总页数
listNum = driver.find_element_by_id("pageBox").text
print(listNum)
number = re.sub("\D", "", listNum)
number1 = list(number)
print(number)
print(number1)
number2 = [int(i) for i in number1]
print(number2)
max_number = max(number2)
print(max_number)
# 获取博客标题
time.sleep(2)
mylist = []
workbook = xlsxwriter.Workbook('./data.xlsx') # 获取的标题保存到当前目录的data.xlsx
worksheet = workbook.add_worksheet()
bold_format = workbook.add_format({'bold': True}) # 加粗
# excel表格表头设计,保存六页数据
worksheet.write('A1', u'第一页', bold_format)
worksheet.write('B1', u'第二页', bold_format)
worksheet.write('C1', u'第三页', bold_format)
worksheet.write('D1', u'第四页', bold_format)
worksheet.write('E1', u'第五页', bold_format)
worksheet.write('F1', u'第六页', bold_format)
row = 1
col = 0
try:
for j in range(1, max_number):
time.sleep(2)
print("============第 %d 页数据==========" % j)
for i in range(1, 41):
mylist1 = driver.find_element_by_xpath(".//*[@id='mainBox']/main/div[2]/div["+str(i)+"]/h4/a").text #
# 获取博客标题名称
print(mylist1)
worksheet.write_string(row + i, col + j - 1, str(mylist1))
time.sleep(2)
target = driver.find_element_by_xpath("html/body/div[6]/main/div[2]/div[41]/div/ul/li[9]") # 找到“下一页”元素
driver.execute_script("arguments[0].scrollIntoView();", target) # 拖动滚动条到指定的元素位置
time.sleep(1)
target.click() # 下一页数据
driver.quit() # 关闭浏览器
workbook.close()
except Exception as e:
print("出错了,原因为:", e)
driver.quit() # 关闭浏览器
workbook.close()
6、实现效果
相关文章
- 如何进行批量差异分析并绘制其火山图及拼图
- 十个高级 TypeScript 开发技巧
- 文献分享——乳腺癌肝和脑转移瘤内异质性的单细胞景观和免疫抑制微环境
- 精华文稿|在非理想输入下NeRF的重建
- 安装教程arcgis10.2
- 为什么 Vite 的请求有时候是相对路径,有时候是 /@fs/ + 绝对路径?
- 公司系统太多,能不能实现账号互通?
- 聊聊Git 分支管理策略
- 末端物流自动配送车交付超1000台,毫末智行加速无人配送商业化
- 裸露土堆智能识别检测系统
- fastposter v2.11.0 天花板级的海报生成器
- 软件开发软件公司应该使用哪些 KPI
- 手把手教你分析 Trace,你学会了吗?
- React源码分析1-jsx转换及React.createElement4
- React源码分析(二)渲染机制4
- 提升代码可读性,减少 if-else 的几个小技巧
- 在 Go 语言中使用 exec 包执行 Shell 命令
- 细说react源码中的合成事件
- react源码解析18事件系统4
- react源码解析17.context4