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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、自动化测试众所周知,自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱。诸如:QTP、Selenium等都具有强大的功能支撑和丰富的知识库,而逐渐成为自动化测试人士必备工具之一。然而,伴随着敏捷开发和持续交付在软件开发项目中的普及和应用,测试工作的重心不得不进一步前移。而由于用户界面的开发通常处于软件开发的末端且缺陷修复成本较大,因此基于GUI的自动化测试无法很好的适用于此类项目。基于应用程序接口(API)的自动化测试却可以很好的解决了此类问题。二、接口自动化测试在分层测试策略中各...
            1 1 1261
            分享
          • 读者提问:阿常,我想请教一下,测试点等同于测试用例吗,需求分析得到的测试点是否可以直接拿过来当测试用例执行呢 ?阿常回答:测试点并不等同于测试用例,不能直接拿来指导测试。1、测试点在内容上可能会存在冗余,测试输入不明确,测试颗粒度太粗,操作环境类似等等一系列的问题。2、测试点需要经过 “ 加工 ” 之后,才能成为测试用例。3、我们需要对测试点进行 “ 去重 ”、“ 合并 ”、“ 细化 ”,再确定各个测试点的测试条件、输入数据和输出结果。4、测试点是一些零散的测试思路的集合。5、测试用例是一份正确指导测试的使用说明书。阿常碎碎念:那如何将测试点加工成为测试用例呢,我们将在下一问中继续讨...
            0 0 1141
            分享
          •   马克-扎克伯格(Mark Zuckerberg)并不吝啬分享他对苹果公司产品或战略的看法,同时还不断强调苹果公司和 Meta 公司之间相互竞争的愿景。在最近的一次采访中,这个话题再次被提起,扎克伯格毫不避讳地分享了他的观点,即他的公司与蒂姆-库克的公司在本质上是完全不同的。他甚至还批评了苹果公司的产品开发方法。  马克-扎克伯格在一次采访中强调,Meta 实际上与苹果截然相反,并着重介绍了他的公司如何为创新提供空间。  虽然苹果和 Meta 的产品线不同,但 Meta Quest 和 Vision Pro 一直是竞争对手,两家公司之间形成了竞争的氛围。马克-扎克伯格(Mark Zucker...
            0 0 415
            分享
          •   1.用例评审的目的  ·为了减少测试人员执行阶段做无效工作,执行无效case,提交无效缺陷(可以友情提醒研发同学,讲到自己负责的相关模块时,注意下是否存在异议点)  · 为了避免三方(产品、研发、测试)需求理解不一致;  · 为了每个测试人员的质量标准与项目要求标准达成一致。  2.评审前的准备工作  2.1用例编写  需求评审结束后,可以把需求拆分为功能点  测试点梳理时,要关注横向逻辑,即功能点本身,更要关注纵向逻辑,即业务流。  工具:建议用XMind  优点:用画思维导图的方式,逻辑清楚,便于评审人员(产品和开发人员)快速查看,评审效率高。  具体用什么工具方法...
            0 0 1305
            分享
          •   兼容性测试是软件开发过程中的重要环节,但如何进行有效的兼容性测试是一个需要关注的问题。下面将介绍一些常用的兼容性测试方法和技巧。  首先,要确定兼容性测试的范围。根据软件的特点和用户的需求,确定需要测试的操作系统、浏览器、分辨率、设备等。通常情况下,可以选择覆盖市场份额较高的操作系统和浏览器,以及常见的分辨率和设备。同时,还可以根据用户的反馈和报告确定一些特定的兼容性问题进行测试。  其次,要选择合适的测试工具和平台。市面上有很多专门用于兼容性测试的工具,这些工具可以模拟不同的操作系统、浏览器和设备,进行自动化测试和截图比较,节省测试时间和人力资源。同时,还可以使用真实的设备进行测试,以获...
            0 0 1699
            分享
      • 51testing软件测试圈微信