выбор элемента в selenium python

Я пытаюсь войти на веб-страницу с седаном python. Я нашел элемент, и он включен, но когда я пытаюсь передать send_keys (), я получаю сообщение об ошибке. Главное (я думаю) в выводе ошибки

selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with 

Мой код

 from selenium import webdriver from selenium.webdriver.common.keys import Keys import contextlib with contextlib.closing(webdriver.Firefox()) as driver: driver.get('http://www.etoro.com/au') elem = driver.find_element_by_class_name('inputUsername') print 'enabled:', elem.is_enabled() print 'selected:', elem.is_selected() elem.send_keys('myusername') 

И выход

 enabled: True selected: False Traceback (most recent call last): File "3_trying_again.py", line 10, in <module> elem.send_keys('ianafterglow') File "/Users/ian/miniconda/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 303, in send_keys self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) File "/Users/ian/miniconda/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 385, in _execute return self._parent.execute(command, params) File "/Users/ian/miniconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 173, in execute self.error_handler.check_response(response) File "/Users/ian/miniconda/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 166, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with Stacktrace: at fxdriver.preconditions.visible (file:///var/folders/5b/ym07nh6d74gcn_773ynwqkth0000gn/T/tmpN1MV8l/extensions/fxdriver@googlecode.com/components/command-processor.js:8959:12) at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/5b/ym07nh6d74gcn_773ynwqkth0000gn/T/tmpN1MV8l/extensions/fxdriver@googlecode.com/components/command-processor.js:11618:15) at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/5b/ym07nh6d74gcn_773ynwqkth0000gn/T/tmpN1MV8l/extensions/fxdriver@googlecode.com/components/command-processor.js:11635:11) at DelayedCommand.prototype.executeInternal_ (file:///var/folders/5b/ym07nh6d74gcn_773ynwqkth0000gn/T/tmpN1MV8l/extensions/fxdriver@googlecode.com/components/command-processor.js:11640:7) at DelayedCommand.prototype.execute/< (file:///var/folders/5b/ym07nh6d74gcn_773ynwqkth0000gn/T/tmpN1MV8l/extensions/fxdriver@googlecode.com/components/command-processor.js:11582:5) 

Итак, что мне нужно сделать?

4 Solutions collect form web for “выбор элемента в selenium python”

Чтобы сделать поле имени пользователя видимым, вам нужно переместить курсор на ссылку входа:

 .... driver.get('http://www.etoro.com/au') action = webdriver.ActionChains(driver) action.move_to_element(driver.find_element_by_xpath( './/a[@class="top-link"]/span[text()="Login"]' )) action.perform() # TODO Need to wait until the `inputUsername` field is visible elem = driver.find_element_by_class_name('inputUsername') ... 

Вы можете использовать явные ожидания:

 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASSNAME, "inputUsername")) ) ... 

Я знаю, что эта проблема решена, я застрял в подобной проблеме и той же ошибке
Я исправил его, просто сделав мой скрипт спящим в течение 2 секунд, а затем возобновил его, только проблема со скоростью подключения

 ... time.sleep(2) ... 

не забудьте импортировать модуль времени

 import time 

пожелать, чтобы кто-нибудь помог в будущем: D

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

 elem = browser.find_element_by_xpath("//nav[2]/ul/li[3]/a").click() 

Я просто изменил [3] на [2], и он смог найти элемент и открыть модальный:

 elem = browser.find_element_by_xpath("//nav[2]/ul/li[2]/a").click() 
  • Selenium Webdriver останавливается с
  • Выполните проверку WebDriverWait () или аналогичную проверку регулярного выражения в Python
  • python selenium webscraping «NoSuchElementException» не распознается
  • Python Selenium Webdriver, чтобы проверить, не существует ли элемент, требуется время
  • WebDriver click () vs JavaScript click ()
  • не удалось вызвать firefox из селена в python на машине AWS
  • Селен: страница отображается по-разному
  • Прокрутка страницы с помощью Selenium Webdriver
  • Selenium падает после 500 тестов
  • Python Selenium Webdriver - попробуйте исключить цикл
  • Смешение неявных и явных ожиданий
  • Python - лучший язык программирования в мире.