ElementNotInteractableException: Сообщение: элемент не взаимодействует - PullRequest
1 голос
/ 02 мая 2020

У меня есть еще один вопрос, касающийся ElementNotInteractableException: Message: element not interactable

Я делаю свои первые шаги в python (пытаюсь запустить маршрут автоматизации QA (уже несколько лет я провожу QA вручную)). Поэтому я попытался найти это в Интернете, но не нашел ответ, который мне помог.

Описание (пропустите, если хотите): Я пытаюсь запустить простой код для запроса карту MTG, затем go найдите ее цену (на более поздней итерации этого скрипта вы сможете выбирать из списка страниц для запроса)

Код:

from selenium import webdriver
from time import sleep
from xpaths import *

card = input('What card are you looking for?')
driver = webdriver.Chrome()
driver.get(url)
searchBox = driver.find_element_by_xpath(searchBox)
sleep(1)
searchBox.send_keys(card)

Неважно, что я пытаюсь (сли, подожди, нажимая на элемент). Я всегда получаю один и тот же ответ selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

(Кстати, я пытаюсь найти карту в starcitygames.com)

Буду признателен за любую помощь, имейте в виду, что это моя первая настоящая попытка кодирования.

Редактировать: Я нахожу элемент searchBox по его xpath = searchBox = '//*[@id=\"search_query\"]'

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2020

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

Похоже, это динамически генерируемый элемент, поэтому взаимодействуйте напрямую с DOM, используя второй метод. Приведенные ниже команды имеют синтаксис Java, вы можете исследовать и применять ту же релевантность к python.

  1. Дождаться, пока элемент станет видимым / активным для нажатия
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(ExpectedConditions.visibilityOf(element)); 
wait.until(ExpectedConditions.elementToBeClickable(element));
Используйте JS Executor для прямого взаимодействия с DOM
JavascriptExecutor javascript = (JavascriptExecutor) driver;
javascript.executeScript("var element = document.querySelector('locator'); element.value = 'whatever';")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...