这几天群里很火的小游戏:找色差
大家玩的不亦乐乎,纷纷群内炫耀自己的分数。
所以,我这就赶紧写了脚本,否则我的分数 太丢人了....
首先新建个.py文件。引入selenium 正常的开头:
进入了这个小功能的首页后,就是要点击开始按钮了:
我用它的class来定位:
点击后便开始了。
这里我找到了颜色不同的属性,利用这一点,我们可以很简单的去对比,找出那个rgb颜色 数值不同的,就是颜色不同的。
代码中,根据xpath 来获取到 这些方块。用的复数哦~
注意我们的代码,应该是在一个无限的大循环下。
这个循环就是每一关:
然后我们遍历这个all, 来找出那个不同的元素,并点击。
这里我不断的用前一个去比后一个,如果相同则继续。否则就继续比更下一个,判断出谁是特殊。
如果到最后俩个还没确定,引起all[i+2] 下标越界, 那说明就是最后俩个。
但是倒数第二个,如果是特殊的,那么上一次循环,它做为all[i+1]时,应该已经被比出来了。
所以如果引发报错,那么就一定是最后一个,也就是当前的all[i+1]是特殊点。
这里逻辑比较绕,大家可以自己多想几次。
然后就是测试时间:
大家可以优化下这个代码,看看谁的分最高!
考验算法能力的时候到了!!!
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.zhaosecha.com/')
time.sleep(2)
driver.find_element_by_class_name('play-btn').click() # 开始按钮
while True:
all = driver.find_elements_by_xpath('//*[@id="box"]/*') #获取所有方块
for i in range(len(all)):
if all[i].get_attribute('style') != all[i+1].get_attribute('style') : #特殊方块存在其一
try:
if all[i].get_attribute('style') != all[i+2].get_attribute('style'): # 那么确定i是特殊点
all[i].click()
break
else: #确定i+1是特殊点
all[i+1].click()
break
except: #如果报错,说明已经比对到最后俩个方块。而前面的如果已经比对过,那说明应该不是特殊的。否则已经被比出来了
all[i+1].click() #所以确定是最后一个特殊方块。
break
time.sleep(0.1)
最后再透漏个更快几倍的办法。
就是利用xpath直接找出属性style不等于正常值的那个按钮直接点击哦…
有兴趣的小伙伴可以自行试试~