ElementNotInteractableException:消息:元素不可交互

时间:2020-05-02 20:44:08

标签: python selenium

我还有一个关于ElementNotInteractableException: Message: element not interactable

的问题

我正在迈入python的第一步(尝试启动质量检查自动化路线(多年以来一直进行人工质量检查))。因此,我尝试在网络上查找此内容,但没有找到适合我的答案。

说明(如果需要,请跳过):我正在尝试运行一个简单的代码来索取MTG卡,然后寻找其价格(在此脚本的后续版本中,您将能够从要查询的页面列表中进行选择)

代码:

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 :(得分:0)

ElementNotInteractableException当找到一个元素时发生,但是您不能与之交互。这可能由于各种原因而发生,例如元素不可见或不显示,元素不在屏幕上或元素在另一个元素后面或隐藏。请尝试以下一些操作。

这看起来是一个动态生成的元素,因此可以使用第二种方法直接与DOM交互。以下命令使用Java语法,您可以研究相同的相关性并将其应用于python。

  1. 等待直到元素可见/可点击
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(ExpectedConditions.visibilityOf(element)); 
wait.until(ExpectedConditions.elementToBeClickable(element));
  1. 使用JS Executor直接与DOM交互
JavascriptExecutor javascript = (JavascriptExecutor) driver;
javascript.executeScript("var element = document.querySelector('locator'); element.value = 'whatever';")