首页 > 解决方案 > Selenium Webdriver :- 搜索选项的元素不可交互异常

问题描述

我正在尝试使用值“fab”填写搜索输入类型框,然后我想使用该关键字显示下一个 url,但我收到元素不可交互的错误。我该如何解决这个问题?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome(executable_path='C:\\Users\\Mansi Dhingra\\Downloads\\chromedriver')
driver.get("https://www.thenational.ae/search?q=")
print(driver.title)
driver.implicitly_wait(10)
search_bar = driver.find_element_by_xpath('//input[@name="q"]')
print(search_bar)
search_bar.clear()
search_bar.send_keys("fab")
search_bar.send_keys(Keys.RETURN)
print(driver.current_url)
driver.close()

错误:-

回溯(最近一次通话最后):文件“C:/Users/Mansi Dhingra/Desktop/Projects/api/news/news_python.py”,第 10 行,在 search_bar.clear() 文件“C:\Users\Mansi Dhingra\ Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webelement.py”,第 95 行,清晰的 self._execute(Command.CLEAR_ELEMENT) 文件“C:\Users\Mansi Dhingra\Desktop\ Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webelement.py”,第 633 行,在 _execute 中返回 self._parent.execute(command, params) 文件“C:\Users\Mansi Dhingra\Desktop \Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py",第 321 行,在执行 self.error_handler.check_response(response) 文件“C:\Users\Mansi Dhingra\Desktop\Projects \api\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 242 行,在 check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable (Session info: chrome=81.0.4044.92)

标签: pythonseleniumselenium-webdriver

解决方案


每当找到 webelement 但尚未准备好进行交互时,webdriver 将抛出 element not intractable 异常。

1.大多数情况下,当元素位于页面底部时,可以通过向下滚动页面来访问它。您可以使用 Action 类滚动以滚动到该元素

WebElement element = driver.findElement(By.id("my-id"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
## actions.click();
actions.perform();

2. 有时我们需要等待几秒钟才能访问网页元素,在这种情况下我们可以添加等待语句。

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'someid')))

推荐阅读