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

编程入门 行业动态 更新时间:2024-10-28 14:36:10

怎么刷色弱测试高分(我可能是有病<a href=https://www.elefans.com/category/jswz/34/1767120.html style=才会写这个)"/>

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

文章目录

  • 色弱测试链接
  • 代码刷高分
    • 鼠标点击法
    • 效果演示
    • selenium识别元素法
    • 效果演示
  • 相关代码


色弱测试链接

.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 pagwhile 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 sysdef make(start, end, nums):interval = (end - start) / (nums - 1)ans = [int(start + interval * i) for i in range(nums)]return ansprint("屏幕分辨率:", 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 timedriver = webdriver.Chrome()
driver.get('.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]' % jcolor = 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] += 1else:nums[1] += 1if len(nums) == 2:if nums[0] == 1 and nums[1] == 1:continueelse:all += 1if 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()breakfinally:if time.time() - start > 61:print(all)breakelse:continue

更多推荐

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

本文发布于:2023-07-28 20:08:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1296661.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:色弱   才会   高分   有病   测试

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!