鉴于上述所提及的问题, 在周末时光, 我撰写了一个借助加法运算“+”来达成B站自动登录流程的内容。该流程主要涵盖了这些方面, 先是返回至桌面, 接着获取坐标, 随后启动浏览器, 再输入网址, 之后点击登录按钮, 然后输入账号密码, 最后进行登录操作。
1)坐标定位工具, 我在此处运用的是, 这个工具, 其安装方法能够参照官方文档。
当然,你也可以从网上搜索绿色免安装版本使用。
上面的工具安装好了之后,我们就开始实战工作了,
import pyautogui # 打开浏览器,启动应用,我们是需要双击哦 pyautogui.doubleClick(14, 214)详细的操作次序是这样的: 轻点浏览器地址栏, 接着输入B站地址, 随后按下回车键, 之后双击浏览器标题栏, 把浏览器弄成最大化。
于上述之一步骤里, 去双击那浏览器图标进而运行浏览器之后, 彼等需先等候浏览器起始达成, 于实际工作当中, 鉴于机器之性能存有差异, 此地之等候时间最宜设定得长些, 以保障浏览器已然启动完成。(自然喽, 诸位倘若欲做得更齐全稳妥些的话, 能够采用图像对比之方式。除开图片识别比对之方式以外, 还能够借助获取任务管理器之中的进程信息来判定应用是否已经启动, 因时间有限, 此处也就不再详述了。若众人想晓得该如何于此次实战里予以运用情况, 届时我会依据文章的热度与否以及需求状况, 来判定有无必要撰写一篇关乎判断应用是否已然启动的文章。在浏览器启动以后, 我们所要做的便是于浏览器的地址栏当中输入B站的地址。
先获取浏览器地址栏坐标(629,51)
接下来是输入B站地址和按下回车键。打开B站的过程代码如下:
# 这里我使用的是点击浏览器地址栏,如果浏览器默认带有URL地址的话,点击操作把浏览器的默认地址选中,然后直接输入B站的URL地址。 # (这里提醒一下大家,一定要注意原有URL地址的清空操作哦。) pyautogui.doubleClick(629, 15) pyautogui.typewrite('https://www.bilibili.com/', interval=1) # 输入地址后,按下回车键 pyautogui.press('enter') # 等待页面加载完成 time.sleep(10) # 双击浏览器的标题栏,实现将浏览器最大化 pyautogui.doubleClick(780, 25) time.sleep(1)为达成这一步骤, 我们得先去点击登录按钮, 于弹出的登录弹框之内输入用户名以及密码, 接着要点击弹框里的登录按钮, 鉴于B站的安全机制, 点击登录按钮之后有可能会出现验证码, 各位需考量是手动点击, 还是运用验证码识别接口来解决, 此处暂不做额外讲述。
这儿, 在点击登录按钮弹出登录弹框之处, 有个要留意的地儿, 即检查工具没法获取到登录图标的控件元素, 仅能获取到B站首页的整个大框架控件。这时, 不再是以中心坐标的这个数值当作我们操作的坐标了。应当取鼠标所在位置的坐标来实施点击操作。当下, 我鼠标置于登录按钮后的坐标是(1252,160)。具体请看如下截图描述。
登录弹框那会儿, 账号密码输入框控件的中心坐标能够成功被识别, 那我们直接去往中心坐标就行, 我这儿的坐标是(1134,457)。
可以识别的还有密码输入框的控件, 我这里中心坐标是(1072,513)。
登录弹框里头的登录按钮控件, 同样是能够辨认出来的, 能够径直前往, 中心坐标为(1232,590)的地方。
行, 具备了登录进程所需的操作坐标资讯后, 紧接着展开代码编写工作。
# 点击顶部操作栏的登录功能菜单 pyautogui.click(1252, 160) # 休眠1秒,等待登录弹框显示完整(虽然说这个弹框肯定花不到1秒的时间,但我们在写自动化操作脚本时要稳妥一些,宁愿多等待一会,程序会更加健壮) time.sleep(1) """ 注意了:来自【Python学习与大数据分析】的提醒: 点击账号输入框,大家注意了,我这里使用的是双击操作, 因为我们不能确定输入框中是否保留有上次操作留下的用户名, 如果有用户名的话,双击操作可以选中上次的用户名, 这样在下一个步骤做输入的时候,会直接替换掉上一步遗留的用户名, 如果没有遗留用户名的话,双击操作也不会有什么负面影响。 """ pyautogui.doubleClick(1134,457) # 做每个动作前,最好休眠一会,不然操作太快的话有些操作可能没有反应。 time.sleep(1) # 输入账号,这里请大家替换成自己的账号哦,这里的interval参数是控制输入速度,单位是秒,这里我设置为0.1秒,也就是说输入速度是0.1秒一个字符。 pyautogui.typewrite('test123456', interval=0.1) time.sleep(1) # 点击密码输入框 pyautogui.click(1072,513) time.sleep(1) # 输入密码 pyautogui.typewrite('123456', interval=0.1) time.sleep(1) # 点击登录弹框上的登录按钮 pyautogui.click(1232,590) # 根据B站的安全机制,点击登录按钮后可能会出现验证码,大家看是手动点击还是使用验证码识别接口解决。这里就不扩展了 # 等待10秒钟,等待登录请求完成。 time.sleep(10)# TODO
在这里, 大家能够进行补充完善, 在点击登录按钮之后, 去针对登录成功与否做一个判断。
方法一, 所运用的图像查找方式, 去查看页面之上有无你的头像图片, 这篇文章当中有提及怎样做图片比对《》。
方法二: 运用web自动化测试库的h方法, 去查找页面之上是否存在你的头像图片。
当然, 必定不会仅仅只有上方提到的那两种方法, 存在着其余的方法得以实现。然而既然于我们此处所运用的是, 那便先采用图像查找的方法。
最终, 给大伙着重讲个得留意的点: 要是大伙拿来运行脚本, 关键得注意, 在代码起始步之前, 要增添把界面转换至桌面的举动。达成的法子有两种:
做法一: 借助发送快捷键《“win”+“d”》的办法回到桌面。
方式二, 通过点击任务栏最右侧的空白区域坐标, 以此来返回桌面。我这里放置一下第二种方式的代码。
# 运行脚本后,我们需要先点击屏幕最右下角的小区域返回桌面到桌面,在桌面才有浏览器的图标 time.sleep(5) pyautogui.click(1917, 1055) time.sleep(5)