怎么刷色弱测试高分(我可能是有病才会写这个)

Posted 宫水二叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么刷色弱测试高分(我可能是有病才会写这个)相关的知识,希望对你有一定的参考价值。

文章目录


色弱测试链接

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):" + str(x).rjust(4) + ',' + str(y).rjust(4)

        print(posStr)  # 打印坐标
        pix = pag.screenshot().getpixel((x, y))
        print(pix)
        time.sleep(0.5)

    except Exception as e:
        print('end....%s' % e)

    finally:
        pass

click.py,依次点击81个方块的位置(注意修改xs和ys,需要用positipn.py获取位置)

import pyautogui
import time
import sys

def make(start, end, nums):
    interval = (end - start) / (nums - 1)
    ans = [int(start + interval * i) for i in range(nums)]
    return ans

print("屏幕分辨率:", pyautogui.size())
print("鼠标位置:", pyautogui.position())
pyautogui.PAUSE = 0.0001  # 设置每次执行暂停时间
xs = make(860, 1305, 9)
ys = make(267, 707, 9)
xs = xs[::2]+xs[1::2]
ys = ys[::2]+ys[1::2]
start = time.time()
# time.sleep(1)
num = 0
num_seconds = 0.0001  # 将鼠标移动到指定坐标的间隔时间
while 1:
    for x in xs:
        for y in ys:
            pyautogui.moveTo(x, y)  # 把鼠标移动到(500,500)
            pyautogui.click()  # 在原地按鼠标左键
            if time.time() - start > 61:
                sys.exit()

chrome_rgb.py,识别颜色并点击方块的代码,需要配置selenium和chrome驱动

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait    # WebDriverWait 库,负责循环等待
from selenium.webdriver.support import expected_conditions as EC    # expected_conditions 类,负责条件出发
import time

driver = webdriver.Chrome()
driver.get('https://xingye.me/game/colortest/index.html')

# element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.XPATH, '//*[@id="index"]/div[2]/button')))
driver.find_element_by_xpath('//*[@id="index"]/div[2]/button').click()
start = time.time()
all = 0
while True:
    try:
        index = [1]
        nums = [1]
        colors = [driver.find_element_by_xpath('//*[@id="box"]/span[1]').get_attribute("style")]
        for j in range(2, 82):
            xpath = '//*[@id="box"]/span[%d]' % j
            color = driver.find_element_by_xpath(xpath).get_attribute("style")
            if color not in colors:
                colors.append(color)
                nums.append(1)
                index.append(j)
            else:
                if color == colors[0]:
                    nums[0] += 1
                else:
                    nums[1] += 1
            if len(nums) == 2:
                if nums[0] == 1 and nums[1] == 1:
                    continue
                else:
                    all += 1
                    if nums[0] == 1:
                        xpath = '//*[@id="box"]/span[%d]' % index[0]
                        driver.find_element_by_xpath(xpath).click()
                    else:
                        xpath = '//*[@id="box"]/span[%d]' % index[1]
                        driver.find_element_by_xpath(xpath).click()
                    break

    finally:
        if time.time() - start > 61:
            print(all)
            break
        else:
            continue

以上是关于怎么刷色弱测试高分(我可能是有病才会写这个)的主要内容,如果未能解决你的问题,请参考以下文章

怎么刷色弱测试高分(我可能是有病才会写这个)

3.相机成像颜色及其组成

echarts堆叠图tooltip中如何仅展示鼠标当前位置相应的指标数据

去面试字节前端,竟然考算法,是不是有病?算法如何刷题?全文高能!倾心整理建议收藏!

去面试字节前端,竟然考算法,是不是有病?算法如何刷题?全文高能!倾心整理建议收藏!

去面试字节前端,竟然考算法,是不是有病?算法如何刷题?全文高能!倾心整理建议收藏!