python - 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)
解决方案
每当找到 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')))
推荐阅读
- spring - 复杂的 Spring Boot 查询
- angular - 单击按钮时Router.navigate不重定向 - Angular 9
- javascript - JS JSON数组查询
- css - CSS Grid 的中心内容
- python - 使用 pandoc 为 Heroku 生成 pdf
- sql - SQL Server 2016 - 按 ID 以逗号分隔的字符串值
- spring-boot - Liquibase 将 url 从 jdbc:mariadb://127.0.0.1:3307/db 更改为 jdbc:mysql://127.0.0.1:3307/db
- text - 如何获得超出屏幕边界以与前沿对齐的 SwiftUI 文本视图?
- jsp - 由 servlet 转发的 JSP 文件中未对请求属性进行 EL 评估
- wavelet - 平稳小波变换中的“小波平面”是什么?