多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

测试工具Selenium定向某音推广植入-自动化测试

更新时间:2022-06-09 09:18:06 作者:多测师 浏览:156

  1、众周知爬虫还是python好,因为它有Scrapy,使用起来真的很棒、也很不错!!!

  但是作者是个测试工程师,不是爬虫工程师,爬虫只是一时的兴趣爱好!!!

  重点是作者仅仅粗略自学过一段scrapy框架,现在要用起来还得从零开始。

测试工具Selenium定向某音推广植入-自动化测试

  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/

联系电话

17727591462

返回顶部