一、简介
在在线打字测试(dazi.kukuw.com)网站中,本人kpm一直不高,想着是否能用python写个脚本来改善下,
于是选择用python的Selenium来实现。也对其中遇到一些常见问题进行解决。
二、正文
1)首先,webdriver.Firefox()初始化了一个火狐浏览器的实例
from time import sleep
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
s = Service("D:\\Python\\geckodriver.exe")
driver = webdriver.Firefox(service=s)
1这里的路径指向的是firefox的驱动,不是firefox浏览器本身,不然无法对firefox进行操作
2)打开网址
driver.get('https://dazi.kukuw.com/')
3)用html元素操作开始操作按钮
driver.find_element(by=By.NAME,value='start_button').click()
4)再通过xpath路径找到文本框并输入原文
for c in range(60):
text = driver.find_element(by=By.ID, value=f'i_{c}').text
driver.find_element(by=By.XPATH,value='''//*[@id="i_'''+str(c)+'''"]/input[2]''').send_keys(text,Keys.SPACE)
sleep(3)
1刚开始采用了如下的xpath,发现每行文本框xpath都一样,于是找父节点
//input[@class='typing']
2页面中需要通过空格换行,所以加了Keys.SPACE
3刚开始没加sleep()导致每次只能循环两次,就卡住
简陋的完整代码
from time import sleep
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
s = Service("D:\\Python\\geckodriver.exe")
driver = webdriver.Firefox(service=s)
driver.maximize_window()
driver.get('https://dazi.kukuw.com/')
driver.find_element(by=By.NAME,value='start_button').click()
for c in range(60):
text = driver.find_element(by=By.ID, value=f'i_{c}').text
driver.find_element(by=By.XPATH,value='''//*[@id="i_'''+str(c)+'''"]/input[2]''').send_keys(text,Keys.SPACE)
sleep(3)
如果需要让作弊不太明显可以,适当的调用sleep()或者退格key.space