jo2aro
@jo2aro
i`m so stupid

Используя Python Selenium почему не нажимается нечего в metamask?

Я использую профиля хром через undetected_chromedriver, однако это не суть важно.
До момента пока мне нужно было ввести пароль в MetaMask всё было чудесно, сначала думал
проблема в том что открывается новое окно и я не правильно выбираю его, но при помоши driver.get_screenshot_as_file()
выяснил что окно открыто то что нужно, затем перепробовал Find element By все возможные способы, ничего не дало результатов, подскажите пожалуйста что я делаю не так?

Сам код:
import undetected_chromedriver as uc
from selenium.webdriver.chrome.options import Options
import time
from selenium.webdriver.common.by import By


accnumber = 18


for i in range(2):
    options = Options()
    options.add_argument(f'--profile-directory=Profile {accnumber}')
    options.add_argument('--user-data-dir=C:\\Users\\ilyar\\AppData\\Local\\Google\\Chrome\\User Data\\')
    driver = uc.Chrome(executable_path="C:\\Users\\ilyar\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe", options=options)
    driver.get('https://www.sushi.com/swap')
    window_before = driver.window_handles[0]
    print(window_before)

    time.sleep(5)
    try:
        driver.find_element(By.CSS_SELECTOR, '#headlessui-popover-button-\:rs\: > span.hidden.md\:block').click()
        time.sleep(3)
    except:
        time.sleep(1)
        print('error click connect wallet sushiswap')

    try: driver.find_element(By.CSS_SELECTOR, '#headlessui-popover-panel-\:r12\: > div > div > button:nth-child(1)').click()
    except:
        time.sleep(1)
        print('error click connect MM sushiswap')

#КОД КОТОРЫЙ НИЖЕ ВЫДАЁТ ОШИБКУ!

    try:
        time.sleep(5)
        window_after = driver.window_handles[1]
        print(window_after)
        driver.switch_to.window(window_after)
        driver.get_screenshot_as_file()
        time.sleep(15)
        driver.find_element(By.XPATH, '//*[@id="password"]').click()
        driver.find_element(By.XPATH, '//*[@id="password"]').send_keys('MyPass')

    except:
        time.sleep(1)
        print('error mm pass')



    time.sleep(100)
    accnumber = accnumber + 1
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
jo2aro
@jo2aro Автор вопроса
i`m so stupid
Пока что нашел единственный способ использовать библиотеку PyAutoGui которая имитирует клики и нажатия по клавиатуре.

значительный минус что программа не будет работать в фоне или много потоке, но для задач большинства этого хватит.

сам код:
try:
        time.sleep(5)
        window_after = driver.window_handles[1]
        print(window_after)
        driver.switch_to.window(window_after)
        time.sleep(5)
        driver.maximize_window()
        sleep(3)
        pyautogui.moveTo(839, 347, duration=randrange(1, 2))
        pyautogui.doubleClick(duration=randrange(1, 2))
        pyautogui.typewrite(password_on_mm)
        sleep(randrange(1, 2))
        pyautogui.click(924, 431, duration=randrange(1, 2))
        sleep(randrange(1, 2))
        pyautogui.click(1843, 358, duration=randrange(1, 2))
        sleep(randrange(1, 2))
        pyautogui.click(1843, 354, duration=randrange(1, 2))

        sleep(100)

    except:
        time.sleep(1)
        print('error click connect MM sushiswap')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
А в консоль ошибки не валятся разве? Метамаск протектером накрыт, он не даст из селениума ничего с собой делать. Даже если ошибка сейчас не в нём,
spoiler
ошибки в вопросе ведь нет
, рано или поздно всё равно в протект упрётся
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы