Selenium Webdriver:搜索选项的元素不可交互异常

2024-10-01 05:03:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用值“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()

错误:-

Traceback (most recent call last): File "C:/Users/Mansi Dhingra/Desktop/Projects/api/news/news_python.py", line 10, in search_bar.clear() File "C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 95, in clear self._execute(Command.CLEAR_ELEMENT) File "C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute return self._parent.execute(command, params) File "C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response) File "C:\Users\Mansi Dhingra\Desktop\Projects\api\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable (Session info: chrome=81.0.4044.92)


Tags: inpyapisearchdriverseleniumlinebar
1条回答
网友
1楼 · 发布于 2024-10-01 05:03:34

每当找到webelement但还没有准备好交互时,webdriver就会抛出element not顽固异常

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

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

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

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

相关问题 更多 >