@janajonja

Почему не срабатывает клик по координатам найденного цвета в Selenium/mss?

Бот, при входе на страницу нажимает на режимы игры, после чего ищет определённый цвет режима(красный(255, 142, 142)) через mss и возвращает координаты цвета. После чего, по этим координатам должен произойти клик, но он не происходит. Клик завернёт в трай, если без него, то выдаёт ошибку selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: move target out of bounds. Также, в терминале в самый первый раз выводит Click, который выводится только если выполнился actions.move_by_offset(x, y).click().perform(), если в except вызвать функцию ещё раз, то остальные разы выбрасывает ошибку.
Код:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from mss import mss
from time import sleep
from fake_useragent import UserAgent
import numpy as np

def start():
    page()
    click_to_color([255, 142, 142])

def find_figure(color):
    m = mss()

    monitor = {
        'left': 0,
        'top': 0,
        'width': 1920,
        'height': 1080
    }
        
    image = m.grab(monitor=monitor)
    array = np.array(image)
    colors = (color[2], color[1], color[0],255)
    index = np.where(np.all(array == colors, axis=-1))
    coords = np.transpose(index)
    return coords

def click_to_color(color):
    coords = find_figure(color)
    if len(coords) and not None:
        x = coords[0][1]
        y = coords[0][0]
        print(x, y)
        try:
            actions.move_by_offset(x, y).click().perform()
            print('Click')
            sleep(5)
        except: print('Nope')

def page():
    driver.get('https://diep.io')
    driver.set_window_size(1920,1080)
    sleep(7)
    actions.move_by_offset(854, 56).click().perform()
    sleep(2)
    

if __name__ == '__main__':
    options = Options()
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    options.add_argument("--disable-blink-features=AutomationControlled")
    options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36')
    driver = webdriver.Chrome(executable_path="chromedriver", chrome_options=options)
    actions = ActionChains(driver)
    start()
  • Вопрос задан
  • 607 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы