色弱测试链接
https://xingye.me/game/colortest/index.html色弱测试链接
代码刷高分
鼠标点击法
色弱测试即是n*n的方块里面有一个方块和其他的方块颜色不同,我们找出这个方块并点击,就会跳到下张图片并获得1分。
我首先想到的是利用鼠标依次点击每个方块,只要鼠标点击的够快,我们就能快速得分。
方块的总体区域没有变化,一开始是4*4,最后会变成9*9,那我们直接设计81个点击区域,让鼠标依次点击即可。
效果演示
色弱测试click
运行代码前需要先获取第一个方块和最后一个方块的位置,然后生成81个方块的位置。
然而鼠标点击和移动的速度是有限制的,不可能一瞬间点击81个地方,因此这种方法虽然有效,但只能刷到60分左右
selenium识别元素法
既然鼠标点击速度有限制,我们不妨直接获取方块的颜色,选中所需的方块直接点击就行了。我们直接使用python的selenium模块获取元素的属性(右键元素,点击检查,既可以看到相应元素)。
可以看到方块的style属性即包含了元素的RGB值。
右键copy xpath,再利用下面这行代码即可以得到元素的style属性
(不会用selenium的建议搜一下怎么配置和使用,我这里用的是selenium2.x,不同版本代码有差异)
xpath = '//*[@id="box"]/span[1]'
color = driver.find_element_by_xpath(xpath).get_attribute("style")
然后既是依次获取每个方块的颜色,找到颜色不同的方块直接点击就行,这样每张图片相当于识别n次(n>=3,因为至少要识别三个方块才能判断哪个方块是应该点击的),点击1次
效果演示
chrome_click
识别元素和网站反应都需要时间,所以分数也是有上限的,经过我测试,能过达到130+
相关代码
position.py,用来确定第一个方块和最后一个方块的位置,得到位置后在click.py代码中修改
import os, time
import pyautogui as pag
while 1:
try:
print("Press Ctrl-C to end")
x, y = pag.position() # 返回鼠标的坐标
posStr = "Position(x,y):" +