前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python+selenium+Chrome(headless) 实现自动赠送虎牙礼物

python+selenium+Chrome(headless) 实现自动赠送虎牙礼物

作者头像
wo.
发布2021-06-15 10:41:39
3.8K3
发布2021-06-15 10:41:39
举报
文章被收录于专栏:了不得的专栏

前几日,在虎牙关注了个主播,领了一个一级狗牌。 然后发现虎牙会每天给粉丝送10个虎粮的免费礼物,不用就过期了。 赠送礼物会增加亲密度,给狗牌升级。 而7天没有亲密度增长的话,亲密度还会掉。 我就在想,不如写一个脚本,每天自动赠送免费礼物给关注的主播。 不用自己管,亲密度也往上涨不是美滋滋

听说selenium自动化测试比较强大,就去了解了一下。 关于简单的在python中使用,自己测试运行以后已经记了下来。安装Chrome(Headless)并在python中使用

先实现虎牙登录

因为并不了解selenium,就去搜了一下有没有关于selenium实现虎牙登录的前人脚步。还真搜到一篇 Selenium怎样定位虎牙直播登录 是java的代码,不过无所谓。修改为python就好 划重点 swtich了解一下

一般登录之后页面都会跳转到新的网页上,如何获取新的网页呢?这里有个窗口句柄的概念,通过切换窗口句柄来完成。 注意!有时候元素在一个frame里面的时候,也需要通过swtich切换。

贴上这部分python代码:

代码语言:javascript
复制
#coding=utf-8
from selenium import webdriver
import time 

option = webdriver.ChromeOptions()
option.add_argument('headless')
driver = webdriver.Chrome(chrome_options=option)
#driver = webdriver.Chrome()
driver.get('https://www.huya.com')
time.sleep(5)
driver.set_window_size(2000,2000)
driver.maximize_window()
time.sleep(5)
#点击登录
login = driver.find_element_by_xpath('//*[@id="nav-login"]').click()
time.sleep(5)

#切换到登录框里面
driver.switch_to.frame('udbsdk_frm_normal')
time.sleep(3)
#输入账号
driver.find_element_by_xpath('//*[@id="m_commonLogin"]/div[1]/span/input').send_keys('name')
#输入密码
driver.find_element_by_xpath('//*[@id="m_commonLogin"]/div[2]/span/input').send_keys('password')
#点击登录
driver.find_element_by_xpath('//*[@id="m_commonLogin"]/div[5]/a[1]').click()
time.sleep(5)

赠送虎粮

这个就比较简单了,通过find_element_by_xpath元素所在位置,单击赠送

代码语言:javascript
复制
#点击虎粮礼物
driver.find_element_by_xpath('//*[@id="player-face"]/div[1]/ul/li[1]').click()
time.sleep(2)

#选择个数,点击赠送
driver.find_element_by_xpath('//*[@id="player-face"]/div[3]/div[1]/input').clear()
driver.find_element_by_xpath('//*[@id="player-face"]/div[3]/div[1]/input').send_keys('1')
time.sleep(2)
driver.find_element_by_xpath('//*[@id="player-face"]/div[3]/div[1]/span[2]').click()
time.sleep(2)

遇到的坑

  1. 刚开始直接用的headless模式,没有直观的看到页面。运行后一直报错: Element is not clickable at point 解决方法: 解决Selenium报错“Element is not clickable at point...”的四种方法 我的原因: “不在视窗里,需要拉滚动条”。 将页面打开后,就直观地看到了,selenium打开的是一个不完全的窗口,登录按钮不在窗口的显示范围内将窗口最大化就解决了。 最大化窗口: driver.maximize_window()
  2. 重新改回headless模式后,同样报错。截图后发现,在headless下,窗口并没有最大化, 原因不明,解决方法未知。 只好手动设置了下窗口尺寸。 设置窗口大小: driver.set_window_size(2000,2000) selenium页面截图: driver.save_screenshot('now.png')

附上完整代码 点击查看

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先实现虎牙登录
  • 赠送虎粮
  • 遇到的坑
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档