我希望你是对的。
我写信给社区是因为我用selenium创建了一个BOT来连接instagram配置文件,但目前我的代码在连接用户名和密码时出现错误。当 Instagram 的窗口打开用户名时,它可以正确写入,但密码也可以使用相同的字符,例如:登录:用户名密码
我希望我能找到有人能告诉我我的代码有什么问题并找出答案:
driver.get("https://www.instagram.com/")
time.sleep(5)
username=driver.find_element(By.CSS_SELECTOR, "input[name='username']")
password=driver.find_element(By.CSS_SELECTOR, "input[name='password']")
username.clear()
password.clear()
username.send_keys("username")
time.sleep(3)
password.send_keys("password")
login = driver.find_element(By.CSS_SELECTOR,"button[type='submit']").click()
THE ERROR MESSAGE THAT I HAVE :
ElementNotInteractableException Traceback (most recent call last)
Cell In[49], line 23
21 time.sleep(3)
22 password.send_keys("password")
---> 23 login = driver.find_element(By.CSS_SELECTOR,"button[type='submit']").click()
26 #driver.quit()
File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webelement.py:93, in WebElement.click(self)
91 def click(self) -> None:
92 """Clicks the element."""
---> 93 self._execute(Command.CLICK_ELEMENT)
File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webelement.py:394, in WebElement._execute(self, command, params)
392 params = {}
393 params["id"] = self._id
--> 394 return self._parent.execute(command, params)
File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py:344, in WebDriver.execute(self, driver_command, params)
342 response = self.command_executor.execute(driver_command, params)
343 if response:
--> 344 self.error_handler.check_response(response)
345 response["value"] = self._unwrap_value(response.get("value", None))
346 return response
File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py:229, in ErrorHandler.check_response(self, response)
227 alert_text = value["alert"].get("text")
228 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
--> 229 raise exception_class(message, screen, stacktrace)
ElementNotInteractableException: Message:
ElementNotInteractableException
,但它不处于可以交互的状态,例如隐藏或禁用,并且 button[type='submit']
,可能是当您尝试时登录按钮当前不可交互单击它。wait
或 sleep
。这将确保按钮在尝试与其交互之前处于 visible and enabled
状态。from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Wait for the login button to be clickable
login_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']")))
login_button.click()
或者您也可以使用
time.sleep()