Сообщение: элемент не подлежит обработке, все еще не работает даже после time.sleep () и WebDriverWait - PullRequest
1 голос
/ 02 июля 2019

Я знаю, что раньше об этом спрашивали много раз, но как обойти исключение "элемент не трудноразрешимый"?

Я довольно новичок в Selenium, поэтому извините, если я что-то неправильно понял или неправильно понял.

Я попытался добавить time.sleep (20) в различные части кода, чтобы проверить, позволяет ли это загружать элемент, но пока безуспешно.

Я что-то здесь упустил?

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


#Login Credentials
email = 'anexample@fakeemail.com'
password = 'Password123'

#Login to Money Dashboard
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
driver.get("https://my.moneydashboard.com/")

loginPageEmail =  WebDriverWait(driver, 20).until(
     EC.presence_of_element_located((By.XPATH, '//*[@id="input_0"]')))

loginPageEmail.send_keys(email)

Я всегда получаю сообщение об ошибке:

     Traceback (most recent call last):
       File "mdash.py", line 26, in <module>
         loginPageEmail.send_keys(email)
       File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py",
 line 479, in send_keys
         'value': keys_to_typing(value)})
       File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py",
 line 633, in _execute
         return self._parent.execute(command, params)
       File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py",
 line 321, in execute
         self.error_handler.check_response(response)
       File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py",
 line 242, in check_response
         raise exception_class(message, screen, stacktrace)
     selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
       (Session info: chrome=75.0.3770.100)
       (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac
 OS X 10.13.6 x86_64)

1 Ответ

1 голос
/ 02 июля 2019

Если вы проверяете, что идентификатор элемента attribute является динамическим каждый раз, когда вы запускаете код. То есть имя attribute должно быть здесь unique attribute для доступа к элементу input. Однако без элемента формы он не идентифицирует * Элемент 1005 *, поэтому я использовал элемент формы вместе с элементом ввода и уникальным свойством элемента ввода.

Используйте WebdriverWait и elementtobeclickable и следующие xpath.

    email = 'anexample@fakeemail.com'
    password = 'Password123'

    #Login to Money Dashboard
    driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
    driver.get("https://my.moneydashboard.com/")
loginPageEmail = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, '//form[@name="vm.registerForm"]//div[@class="inputs"]//input[@name="email"]')))
loginPageEmail.send_keys(email)
loginPagepassword = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, '//form[@name="vm.registerForm"]//div[@class="inputs"]//input[@name="password"]')))
loginPagepassword.send_keys(password)

Выход: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...