0


【UI自动化】实现C站三连功能

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥰 博客首页:knighthood2001****

😗 欢迎点赞👍评论🗨️

❤️ 热爱python,期待与大家一同进步成长!!❤️

👀给大家推荐一款很火爆的刷题、面试求职网站👀

跟我一起来巩固基础、开启刷题之旅吧

    这篇文章笔者拖了很久(教程有些内容我自己都试着试着给忘了),现在终于有一种实现方式了。

注:文章仅供参考哦,只是技术分享!!

前言(也是一个令人困惑的问题)

    首先,C站实现三连(**点赞、收藏、评论**)是需要先登录的,而且由于是浏览器,笔者一开始想到的是使用selenium,因此就需要之前笔者写过的内容作为基础

Selenium操作已经打开的Chromehttps://blog.csdn.net/knighthood2001/article/details/126778424?spm=1001.2014.3001.5502 接着如下,查找并copy了C站三连相应的xpath或selector,代码如下

发现报错,定位不到相应的元素,试了多种定位,还是报错,后来在 csdn上 找了相应的内容(给文章点赞),试了一下发现还是不行。

笔者尝试,发现左侧部分可以正常定位与点击,右边部分(main部分)则不行,也试过查找嵌套iframe,还是不行。因此笔者猜测是由于main上面的script

如果大家能帮忙的,希望帮忙解答一下。

正题

    上述过程经历了好久,笔者果断放弃了。然后刚开始不太看好**uiautomation**的,所以使用**uiautomation**的尝试非常迟(笔者当时使用inspect.exe看了,发现点赞这些按钮不是真正意义上的按钮,而是文本和链接类型的,所以比较难搞),后来慢慢的只能硬着头皮上了,发现成功了。

    因此给大家写下这篇!!

模块准备

import time
import uiautomation as auto
import random

定义chrome控件

chrome = auto.PaneControl(ClassName="Chrome_WidgetWin_1")
chrome_specific = chrome.DocumentControl(ClassName="Chrome_RenderWidgetHostHWND")

随机评论库

word = ['文章写的很棒呀,支持', '博主写的太棒了吧,期待后续', '学到了学到了,感谢大佬分享']

笔者目前写的比较少。

思路讲解

** **

    笔者尝试过很多方法定位该列表,最终失败了,突然发现可以通过先定位打赏,然后在定位其他的控件,试了后发现效果也还行。 
# 通过找到打赏控件,从而找到其他控件
dashang = chrome_specific.HyperlinkControl(Name='打赏')
# 三连控件的父类
all = dashang.GetParentControl().GetParentControl()

点赞

# 点赞
dianzan = all.GetFirstChildControl().Click()

收藏

     在收藏控件查找过程中,也发现其比较难找,因此笔者尝试通过查找默认收藏夹来定位收藏按钮(后来发现只要点击这一行就能实现点击,无需指定收藏按钮)
# 收藏
shoucang = all.GetChildren()[2].Click()
time.sleep(1)
# 通过默认收藏夹找到对应的收藏按钮
mr = chrome_specific.TextControl(Name="默认收藏夹")
shoucang_btn = mr.GetParentControl().GetLastChildControl()
shoucang_btn.Click()

评论

# 评论部分
time.sleep(1)
pinglun = all.GetChildren()[4].Click()
auto.SendKeys(random.choice(word))
auto.SendKeys("{ctrl}{shift}{Enter}")
    点击评论按钮后,光标出现,你只需要打字即可,在调用随机评论库,就能实现评论了。接着我们使用**ctrl+shift+enter**即可发送评论。还是挺便捷的。

全部代码展示

import time
import uiautomation as auto
import random

chrome = auto.PaneControl(ClassName="Chrome_WidgetWin_1")
chrome_specific = chrome.DocumentControl(ClassName="Chrome_RenderWidgetHostHWND")

word = ['文章写的很棒呀,支持', '博主写的太棒了吧,期待后续', '学到了学到了,感谢大佬分享']
# 通过找到打赏控件,从而找到其他控件
dashang = chrome_specific.HyperlinkControl(Name='打赏')
# 三连控件的父类
all = dashang.GetParentControl().GetParentControl()
# 点赞
dianzan = all.GetFirstChildControl().Click()
# 收藏
shoucang = all.GetChildren()[2].Click()
time.sleep(1)
# 通过默认收藏夹找到对应的收藏按钮
mr = chrome_specific.TextControl(Name="默认收藏夹")
shoucang_btn = mr.GetParentControl().GetLastChildControl()
shoucang_btn.Click()
# 评论部分
time.sleep(1)
pinglun = all.GetChildren()[4].Click()
auto.SendKeys(random.choice(word))
auto.SendKeys("{ctrl}{shift}{Enter}")

**前期的思考 **

    笔者刚开始是采用定位点去实现点赞功能的,通过将**网页缩放为67%**,实现点赞,不过后来发现csdn最下面栏会有差别(是否出现专栏目录),因此最后定位会有差别,因此笔者想的是通过判断**专栏目录控件**是否存在,如果存在,则使用这一套定位的点,如果不是则使用另外一套定位。
例:auto.Click(677, 985)与auto.Click(707, 985)

结尾

    希望有人能回答一下我的问题,希望这篇文章能给大家带来帮助!!

本文转载自: https://blog.csdn.net/knighthood2001/article/details/127098312
版权归原作者 knighthood2001 所有, 如有侵权,请联系我们删除。

“【UI自动化】实现C站三连功能”的评论:

还没有评论