• 0
  • 0
分享
  • Selenium实现微博自动化运营:关注、点赞、评论——软件测试圈
  • 恬恬圈 2021-05-10 11:43:25 字数 5625 阅读 1180 收藏 0

Selenium 是什么?

Selenium是一个用于Web应用程序测试的工具,可以模拟真正的用户操作,支持多种浏览器,如Firefox,Safari,Google Chrome,Opera等。

Selenium 模拟的就是一个真实的用户的操作行为,我们完全不用担心 cookie 追踪和隐藏字段的干扰。

一、核心代码

talking is cheap,话不多说,上代码!

from selenium import webdriver
import time
# 注意这里使用了我本机的谷歌浏览器驱动
browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver')
# 设置用户名、密码
username = "你的用户名"
password = "你的密码"
# 打开微博登录页
browser.get('https://passport.weibo.cn/signin/login')
browser.implicitly_wait(5)
time.sleep(1)
# 填写登录信息:用户名、密码
browser.find_element_by_id("loginName").send_keys(username)
browser.find_element_by_id("loginPassword").send_keys(password)
time.sleep(1)
# 点击登录
browser.find_element_by_id("loginAction").click()
time.sleep(1)
# 通过人机验证,找到那个小点点击一下
browser.find_element_by_class_name("geetest_radar_tip").click()
# 打开我们的中公题库君的首页
browser.get('https://m.weibo.cn/u/5430882137')
# 加关注
follow_button = browser.find_element_by_xpath('//div[@class="m-add-box m-followBtn"]')
follow_button.click()
time.sleep(1)
# 这时候弹出了选择分组的框,定位取消按钮
group_button = browser.find_element_by_xpath('//a[@class="m-btn m-btn-white m-btn-text-black"]')
group_button.click()
time.sleep(1)
# 这时候我们就关注成功了,好,接下来,我们给题库君点赞和评论一下
# 找到第二条微博,因为第一条微博都是置顶的
second_weibo=browser.find_element_by_xpath("//div[@class='card m-panel card9 weibo-member card-vip'][3]")
second_weibo.text
js = "arguments[0].scrollIntoView();" 
# 将下拉滑动条滑动到当前div区域
browser.execute_script(js, second_weibo)  
# 给第二条微博点赞
selector="//div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][3]"
a=browser.find_element_by_xpath(selector)
a.click()
# 定位第二条微博的评论处,点击
selector="//div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"
a=browser.find_element_by_xpath(selector)
text=a.text
a.click()
# 输出评论内容
wishes="I’m super saiyan, best wishes to you !"
if text=='评论':
    # 光标定位到发表评论处
    comment=browser.find_element_by_tag_name('textarea')
    comment.click()
    # 输入评论内容
    comment.send_keys(wishes)
    time.sleep(1)
    # 定位发送按钮
    sendBtn=browser.find_element_by_class_name('m-send-btn')
else:
    # 光标定位到发表评论处
    focus=browser.find_element_by_css_selector('span[class="m-box-center-a main-text m-text-cut focus"]')
    focus.click()
    # 点击评论
    comment=browser.find_element_by_tag_name('textarea')
    comment.click()
    # 输入评论内容
    comment.send_keys(wishes)
    # 定位发送按钮
    sendBtn=browser.find_element_by_class_name('btn-send')
    
# 发表评论
sendBtn.click()

二、步骤分解

1.打开浏览器

from selenium import webdriver
import time
# 注意这里使用了我本机的谷歌浏览器驱动
browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver')

1.png

2.访问微博登录页

# 打开微博登录页
browser.get('https://passport.weibo.cn/signin/login')
browser.implicitly_wait(5)

2.png

可以看到,已经打开了页面

3.输入账号密码

# 填写登录信息:用户名、密码
username = "你的用户名"
password = "你的密码"
browser.find_element_by_id("loginName").send_keys(username)
browser.find_element_by_id("loginPassword").send_keys(password)
time.sleep(1)

3.png

4.点击登录

# 点击登录
browser.find_element_by_id("loginAction").click()

4.png

5.通过人机验证

找到那个小点点击一下

browser.find_element_by_class_name("geetest_radar_tip").click()

登录成功,如下所示

6.png

6.访问首页

browser.get('https://m.weibo.cn/u/5430882137')

5.jpg

7.加一下关注

#加关注
follow_button = browser.find_element_by_xpath('//div[@class="m-add-box m-followBtn"]')
follow_button.click()
time.sleep(1)
# 这时候弹出了选择分组的框,定位取消按钮
group_button = browser.find_element_by_xpath('//a[@class="m-btn m-btn-white m-btn-text-black"]')
group_button.click()

7.jpg

关注成功后,让选择分组,这里我直接找到取消按钮点击了一下

这时候我们就关注成功了,好,接下来,我们找到题库君非置顶的第一条微博评论一下

8.定位到第2条微博

因为第1条一般是置顶的,定位到第2条微博页面处

# 找到第二条微博,因为第一条微博都是置顶的
second_weibo=browser.find_element_by_xpath("//div[@class='card m-panel card9 weibo-member card-vip'][2]")
second_weibo.text
js = "arguments[0].scrollIntoView();" 
# 将下拉滑动条滑动到当前div区域
browser.execute_script(js, second_weibo)

8.png

9.开始点赞

# 给第二条微博点赞
selector="//div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"
a=browser.find_element_by_xpath(selector)
a.click()

9.jpg

可以看到,点赞成功了

10.点击评论

#定位第二条微博的评论处
selector="//div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"
a=browser.find_element_by_xpath(selector)
text=a.text
a.click()

9.jpg

这里的逻辑是,点击了,如果还没有人评论,评论框显示的文字叫<评论>,如果已经有人评论了会显示评论数量

# 输入评论内容
wishes="I’m super saiyan, best wishes to you !"
if text=='评论':
    # 光标定位到发表评论处
    comment=browser.find_element_by_tag_name('textarea')
    comment.click()
    # 输入评论内容
    comment.send_keys(wishes)
    time.sleep(1)
    # 定位发送按钮
    sendBtn=browser.find_element_by_class_name('m-send-btn')
else:
    # 光标定位到发表评论处
    focus=browser.find_element_by_css_selector('span[class="m-box-center-a main-text m-text-cut focus"]')
    focus.click()
    # 点击评论
    comment=browser.find_element_by_tag_name('textarea')
    comment.click()
    # 输入评论内容
    comment.send_keys(wishes)
    # 定位发送按钮
    sendBtn=browser.find_element_by_class_name('btn-send')
    
# 发表评论
sendBtn.click()

11.png

12.png

哈哈,看到已经评论成功了,到此,通过Selenium实现了微博自动化:关注、点赞、评论,感觉还挺好玩的~

三、自动化运营常用工具

  • Selenium:用于 Web 测试的工具,支持多种浏览器和自动化测试

  • Puppeteer:一个Nodejs的库,支持调用Chrome的API来操纵Web,能进行无头浏览模。

    相比较Selenium或是PhantomJs,它最大的特点就是它的操作Dom可以完全在内存中进行模拟既在V8引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。

  • PhantomJS:基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到,可以实现诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。

  • lxml:python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高

  • Scrapy:Python开发的爬虫框架,功能强大,可以用于数据挖掘、监测和自动化测试。

Scrapy就像爬虫界的AK47,做某些大批量数据采集时简单易用,而requests就像瑞士军刀,经过专业训练的高手用它来杀敌于无形。

小的项目或者深度定制建议使用requests,大的项目,并发量大的建议使用scrapy。


作者:无涯

原文链接:https://www.cnblogs.com/chenqionghe/p/12311182.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • SoapUI Windows 版本下载今天带大家过一遍 SoapUI 在 Windows 系统下的安装教程吧!各位 开发小伙伴 们可以跟着我一起来~下载安装包下载链接:https://www.soapui.org/downloads/soapui/安装安装非常简单,只需双击它即可启动,安装程序将立即启动就可以看到开始安装的界面了一直点击 下一步,并设置安装的路径,默认是:C:\Program Files\SmartBear\SoapUI-5.5.0勾选你所需要的安装组件最后会有一个进度条,我们只需要等待进度条到 100%最后安装成功体验 SoapUI接下来带大家简单体验一下:使用 SoapUI...
            0 0 598
            分享
          •   保时捷公布了 2023 财年业绩报告。报告显示,保时捷 2023 年全年营收为 442 亿欧元,同比增长 7.7%。2023 年,保时捷全球交付量增长 3.3%,达到 320,221 辆。  为延续强劲的势头,保时捷计划在 2024 年推出至少四款全新或大幅改款的车型。首款上市的新车将是备受期待的全新纯电动 Panamera。紧随其后的是升级换代的纯电动 Taycan,新车将在今年春季上市。  上个月,保时捷发布了 2025 款 Taycan,新款车型拥有更长的续航里程、更快的充电速度以及更强悍的性能。本周,保时捷又推出了其有史以来最强大的量产车型 ——Taycan Turbo GT,最大...
            0 0 131
            分享
          • 前言       一直想把jdk1.8的新特性整理下,恰好看到老外的git(文后有链接),在这个结构上继续完善了说明和功能,做了41个单元测试案例,方便新人学习。以下内容很干,对于一个萌新小白来说,学习jdk1.8的新特性,基本看一遍就知道个7788了,在熟读两遍最后跟着写一遍,那么在实际项目中就可以运用了。不过!新特性,虽然很好。但如果想用,那么自己一定要看看相对应的源码并多练习,否则真的容易给自己搞晕,又很难阅读。零、回顾一个抽象类       在jdk1.8之前,因为接口里只能做方法定义不能有方法的实现,因此...
            14 14 1369
            分享
          • 根据去年的大数据报告显示互联网行业的薪酬已经超过金融行业夺取了冠军席位,互联网行业的高薪酬成为其他很多行业羡慕的对象,因此很多人转行从事IT工作,其中软件测试工作尤其受欢迎,特别是在一线城市,因为软件测试如门槛低,创业公司多,需求大,容易找工作,提升很快,成为很多入门互联网行业选择的职业。作为一名刚入门的软件测试工程师,了解清楚软件测试的方向是必须的,因为只有清楚了测试方向才能确定自己的发展方向,软件测试方向大致分为以下五种:第一种Web测试:在几年之前,移动端互联网没有爆发之前,Web测试是测试的主流方向,虽然现在被移动互联网分了一杯羹,但是需求仍然很大,Web测试包括测试,Web服务器测试...
            0 0 999
            分享
      • 51testing软件测试圈微信