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

您所在的位置:网站首页 直播刷礼物自动打印 python+selenium+Chrome(headless) 实现自动赠送虎牙礼物

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

2024-06-03 09:26| 来源: 网络整理| 查看: 265

前几日,在虎牙关注了个主播,领了一个一级狗牌。 然后发现虎牙会每天给粉丝送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)遇到的坑刚开始直接用的headless模式,没有直观的看到页面。运行后一直报错: Element is not clickable at point 解决方法: 解决Selenium报错“Element is not clickable at point...”的四种方法 我的原因: “不在视窗里,需要拉滚动条”。 将页面打开后,就直观地看到了,selenium打开的是一个不完全的窗口,登录按钮不在窗口的显示范围内将窗口最大化就解决了。 最大化窗口: driver.maximize_window()重新改回headless模式后,同样报错。截图后发现,在headless下,窗口并没有最大化, 原因不明,解决方法未知。 只好手动设置了下窗口尺寸。 设置窗口大小: driver.set_window_size(2000,2000) selenium页面截图: driver.save_screenshot('now.png')

附上完整代码 点击查看



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3