一分钟799字不是梦,Python实现自动打字

一、环境搭建

本程序使用了浏览器的webdiver自动控制程序包,所以在使用本程序时需要进行相关环境变量:

1.首先查看浏览器的版本号

2.安装相应的驱动包

访问:chromedriver下载地址,下载对应版本的chromedriver(大版本号相同即可),并放在浏览器的安装目录下,并将安装目录添加到系统环境变量的Path中即可。(Edge浏览器需要下载edgedriver

 注:python可以直接使用pip指令进行安装 

二、源码讲解

1.在打字前,引用webdriver包和相关函数:

​
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import random
from pynput.keyboard import Key, Controller
global browser

​

2.定义webdriver的地址并引用

options = webdriver.EdgeOptions()
options.add_experimental_option('detach', True)  # 定义edge驱动去地址
keyboard = Controller()
browser = webdriver.Edge(options=options)  # 启动浏览器

3.输入竞赛码和测试时间

# 选择竞赛模式
    browser.find_element(by=By.ID, value='radio_group2').click()  # 点击竞赛按钮
    time.sleep(1) # 等待时间
    browser.find_element(by=By.ID, value='group_num').send_keys(invitation_code)  # 输入邀请码
    time.sleep(1)
# 选择普通模式
    browser.find_element(by=By.ID, value='time').clear()  # 清除原有的测试时间
    browser.find_element(by=By.ID, value='time').send_keys(test_time)  # 输入测试时间
browser.find_element(By.XPATH, '//*[@id="form"]/ul[6]/li[2]/input').click()  # 点击开始测试按钮
time.sleep(0.5)

4.在每次循环打字前,设定打字的间隔时间:

for i in range(0, 60):
    x_v = browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/div/span''').text + ' '
    for j in x_v:
        time.sleep(speed)  # 控制每次打字的间隔时间

5.设置故意打错的概率及要打错几个字:

 error_value = random.randint(1, 20)
        if error_value == 2:  # 当error_value等于2时,代表故意打错
            error_length = random.randint(1, 3)  # 需要打错几个字母
            for k in range(error_length):  # 进行打错操作
                letter_v = random.randint(97, 122)
                letter = chr(letter_v)  # 数字转换为字母
                time.sleep(speed)
                browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/input[2]''').send_keys(letter)

原理:生成随机数然后将数字随机转换成字母

6.打错后,需要退格再重新输入正常的内容:

            for a in range(error_length):  # 进行退格操作
                keyboard.press(Key.backspace)
                keyboard.release(Key.backspace)
        browser.find_element(By.XPATH, '''//*[@id="i_''' + str(i) + '''"]/input[2]''').send_keys(j)

三、实现效果

四、注意

1.如果发现浏览器闪退的话请检查相应的webdriver与浏览器版本号是否一致

2.输入数字时注意进行数据类型转换(输入的数字默认为char类型)

print("\n\n输入的数字与实际速度不符合且有少许误差,且不同浏览器的都不同,可以先测试一下,然后输入合适的数字\n")
speed = float(input("请输入速度:")) # 将数据类型char转换为float浮点型
print("\n请选择您的测试类型:\n1.英文打字\n2.中文打字\n3.竞赛\n4.竞赛(邀请码)")
mode = input()
mode = int(mode) # 转换为int整型

3.selenium相关教程:

(1)selenium网页自动化操作(进行定位和输入、单机等操作)

五、总结

这个代码很容易理解和实现,就是运用了selenium的相关操作,然后运用了一些函数进行用户登录、换则打字模式等操作

六.源码

相关源码可以私信作者的CSDN进行获取

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值