首页 > 解决方案 > 需要让小游戏自动运行......我不知道如何解决它

问题描述

http://zzzscore.com/memory/

如果你进入链接,你会看到一个小游戏。我需要让这个小游戏自己做。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome('../chromedriver')
driver.get('http://zzzscore.com/memory/')
driver.implicitly_wait(5)
def find_click():
    picture1 = btns[0].value_of_css_property('background-color')
    picture2 = btns[1].value_of_css_property('background-color')
    picture3 = btns[2].value_of_css_property('background-color')
    picture4 = btns[3].value_of_css_property('background-color')
    picture5 = btns[4].value_of_css_property('background-color')
    picture6 = btns[5].value_of_css_property('background-color')
    picture7 = btns[6].value_of_css_property('background-color')
    picture8 = btns[7].value_of_css_property('background-color')
    picture9 = btns[8].value_of_css_property('background-color')
    picture10 = btns[9].value_of_css_property('background-color')
    picture11 = btns[10].value_of_css_property('background-color')
    picture12 = btns[11].value_of_css_property('background-color')
    picture13 = btns[12].value_of_css_property('background-color')
    picture14 = btns[13].value_of_css_property('background-color')
    picture15 = btns[14].value_of_css_property('background-color')
    picture16 = btns[15].value_of_css_property('background-color')

    for btn in btns:
        if picture1 == picture2:
            btn[1].click()
            btn[5].click()
            break


time.sleep(3)

# finding buttons
btns = driver.find_elements_by_css_selector('#body > div')

# looking <span>'s class
for b in btns:
    val = b.find_element_by_css_selector('span').get_attribute('class')
    print(val)
while True:
    find_click()

我只需要让迷你游戏自己运行但我不知道该怎么做如果你不介意你的时间,告诉我如何解决这个问题

标签: pythonselenium

解决方案


只需执行以下操作。通过等待元素加载来获取所有跨度文本。然后执行 for for 循环以单击相似的值。

wait = WebDriverWait(driver, 3)
driver.get("http://zzzscore.com/memory")
images = wait.until(EC.presence_of_all_elements_located((By.XPATH,"//div[@class='grid x4']//span")))
#for image in images:
    #driver.execute_script("arguments[0].removeAttribute('style')",image)
for i in images[:-1]:
    for j in images[1:]:
        if i.get_attribute('class')==j.get_attribute('class'):
            i.click()
            j.click()
        #print(i.get_attribute('class'),j.get_attribute('class'))

一个更困难但更快的方法是删除索引而不是 O(n^2)。

进口

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

推荐阅读