[英]ElementNotInteractableException: Message: element not interactable error sending text in search field using Selenium Python
I try to use send_keys on a website, which gives me an error of element not interatable.我尝试在网站上使用 send_keys,这给了我元素不可交互的错误。
Here is my code below:下面是我的代码:
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
import time
chrome_optionsme = Options()
chrome_optionsme.add_argument("--incognito")
chrome_optionsme.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(options=chrome_optionsme,
executable_path="/Users/chueckingmok/Desktop/html/chromedriver")
url='https://thelubricantoracle.castrol.com/industrial/en-DE'
driver.get(url)
time.sleep(5)
welcome_sec_one=WebDriverWait(driver,10).until(
EC.presence_of_element_located((By.XPATH,'//*[@id="ctl00_termsPopup_lbConfirm"]'))
)
welcome_sec_one.click()
time.sleep(5)
driver.find_element_by_xpath("//input[@class='search'[@id='txtSearch']").send_keys("Example")
![Uploaded the error image][1] ![上传错误图片][1]
Here is the code
ElementNotInteractableException Traceback (most recent call last)
<ipython-input-2-1415cecd56f9> in <module>
----> 1 driver.find_element_by_xpath("//input[@class='search'][@id='txtSearch']").send_keys("Example")
/Applications/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py in send_keys(self, *value)
477 self._execute(Command.SEND_KEYS_TO_ELEMENT,
478 {'text': "".join(keys_to_typing(value)),
--> 479 'value': keys_to_typing(value)})
480
481 # RenderedWebElement Items
/Applications/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py in _execute(self, command, params)
631 params = {}
632 params['id'] = self._id
--> 633 return self._parent.execute(command, params)
634
635 def find_element(self, by=By.ID, value=None):
/Applications/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
319 response = self.command_executor.execute(driver_command, params)
320 if response:
--> 321 self.error_handler.check_response(response)
322 response['value'] = self._unwrap_value(
323 response.get('value', None))
/Applications/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):
ElementNotInteractableException: Message: element not interactable
(Session info: chrome=83.0.4103.116)
I think the problem is that I cannot locate the element eventually.我认为问题在于我最终无法找到该元素。 So, that's why the element not interactable.
所以,这就是元素不可交互的原因。 btw, the website link: https://thelubricantoracle.castrol.com/industrial/en-DE# I want to use the search button.
顺便说一句,网站链接: https://thelubricantoracle.castrol.com/industrial/en-DE#我想使用搜索按钮。
Anyone can help?任何人都可以帮忙吗?
This error message...此错误消息...
ElementNotInteractableException: Message: element not interactable
...implies that the WebElement with whom you are trying to interact isn't interactable (isn't in interactable state) at that point of time. ...意味着您尝试与之交互的WebElement在该时间点不可交互(不处于可交互状态)。
The two(2) main reasons for this error are:此错误的两个 (2) 主要原因是:
click()
too early even before the element turns clickable / interactable .click()
。 To send a character sequence with in the search field you you have to induce WebDriverWait for the element_to_be_clickable()
and you can use the following Locator Strategies :要在搜索字段中发送字符序列,您必须为
element_to_be_clickable()
诱导WebDriverWait并且可以使用以下定位器策略:
Code Block:代码块:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get("https://thelubricantoracle.castrol.com/industrial/en-DE")
WebDriverWait(driver, 20).until(lambda driver: driver.execute_script('return document.readyState') == 'complete')
time.sleep(3)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='button primary' and contains(@id, 'termsPopup_lbConfirm')]"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='search-init']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='search']"))).send_keys("Example")
Browser Snapshot:浏览器快照:
You can find a couple of relevant detailed discussions in:您可以在以下位置找到一些相关的详细讨论:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.