测试工具Selenium定向某音推广植入-自动化测试
更新时间:2022-06-09 09:18:06 作者:多测师 浏览:156
1、众周知爬虫还是python好,因为它有Scrapy,使用起来真的很棒、也很不错!!!
但是作者是个测试工程师,不是爬虫工程师,爬虫只是一时的兴趣爱好!!!
重点是作者仅仅粗略自学过一段scrapy框架,现在要用起来还得从零开始。
2、那么通过F12浏览器调试工具,可以使用接口来爬取数据吗?
结果大失所望!!!因为直接requests.get(url)请求会提示错误,并没有数据返回。
仔细一看发现请求参数中有个加密参数,所以每次浏览器请求都会不一样,如果不知道规则,也就无法通过这种方式爬数据。
3、既然作者是枚测试人员,那么UI自动化测试中的selenium工具,是不是可以用呢?
是的,办法总比困难多。再不济,连接口请求都能拿来做爬虫呢。
使用selenium来爬取某音的视频数据
前提条件:使用者必须有python基础及xpath语法且有自动化思想。
# 准备python+selenium环境;下载对应chrome浏览器的版本驱动;先准备一个demo测试一下,是否能正常使用!
from selenium import webdriver
driver=webdriver.Chrome(executable_path="../chromedriver.exe")
driver.implicitly_wait(30)
driver.maximize_window()
driver.get("http://www.baidu.com")
# do somethings
driver.quit()
如果是目标明确,直接在浏览器中打开官网,搜索关键字得到url<如下代码演示>
'''
Created on 2021年7月22日
'''
import re
from time import sleep
from selenium import webdriver
# 初始化驱动对象
driver=webdriver.Chrome(executable_path="../chromedriver.exe")
driver.implicitly_wait(30)
driver.maximize_window()
# 打开目标网址
url="https://www.xxxxyin.com/search/%E4%B8%8A%E6%B5%B7%E6%95%B4%E5%9E%8B"
driver.get(url)
# 可能是反扒的原因,有拼图验证
sleep(5) # 这里手动,用于测试
# 可以使用图像处理,处理滑块验证
# 最后当然是使用无头模式
# 获取当前句柄,后面页面切换使用
# handler=driver.current_window_handle
# 获取当前结果页的所有元素集
video_pic=driver.find_elements_by_xpath("//div[@style='display: block;']/ul/li/div/a[1]")
# 计数器
i=1
for video in video_pic:
# 遍历点击元素
video.click()
# 获取浏览器所有句柄
handlers=driver.window_handles
# 切换最新的那一个
driver.switch_to_window(handlers[-1])
# 获取跳转页面元素:标题、点赞、评论、发布时间、用户名
titles=driver.find_elements_by_xpath("//div/div[2]/div[1]/div[1]/div[1]/div[2]/h1/span[2]/span/span/span/span")
if len(titles)>0:
title=""
for tit in titles:
title+=tit.text
else:
title="没有获取到完整的title"
# 随便用个表达式,先达到目的,再优化定位表达式
praise=driver.find_element_by_xpath("//div/div[2]/div[1]/div[1]/div[1]/div[2]/div/div[1]/div[1]/span").text
comment=driver.find_element_by_xpath("//div/div[2]/div[1]/div[1]/div[1]/div[2]/div/div[1]/div[2]/span").text
open_time=driver.find_element_by_xpath("//div/div[2]/div[1]/div[1]/div[1]/div[2]/div/div[2]/span").text
# 视频作者名称
username=driver.find_element_by_xpath("//div/div[2]/div[1]/div[2]/div/div[1]/div[2]/a/div/span/span/span/span/span")
# 点击用户名跳转用户详情页
username.click()
# 获取当前页的url地址后,就关闭当前页面
c_url=driver.current_url
driver.close() # 为什么关闭不了
param_url=c_url.split("?")[1] # 拆分url地址?拼接的参数
# 正则匹配,提取用户视频id、用户id
author_id=re.findall("(\d{11})",param_url)[0]
group_id=re.findall(r"(\d{19})",param_url)[0]
# 控制台输出结果
print("第{}条,视频title:{},作品id:{},用户id:{},评论数:{},点赞数:{},发布时间:{}".format(i,title,group_id,author_id,comment,praise,open_time))
# 切换第一页
driver.switch_to_window(handlers[0])
i+=1 # 计数器加1
# 退出driver驱动
driver.quit()
将结果输出在控制台,爬取关键信息如下:
对比领导发过来视频操作的数据基本匹配,此处应该录屏动态展示效果会更好!
总结
从工具易用(完整)性来讲爬虫,selenium工具不如scrapy框架,主要体现在scrapy方便数据库操作,功能更直接。
以上内容为大家介绍了自动化测试中的测试工具Selenium定向某音推广植入,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/