所以我试图打开一个网站,然后导航到某个页面,该页面包含我必须从中抓取数据的页面。我能够提供输入,但是在到达最后一个提交按钮之前,我得到了错误“ selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到视图中”。有什么想法吗?
我曾尝试引入wait方法,但仍然无法提供有用的结果,反而会降低站点速度。下面是代码。
from selenium import webdriver
driver=webdriver.Firefox()
ok=driver.find_element_by_css_selector('#dropdownlistContentdrpState > input').send_keys('Chandigarh')
#time.sleep(5)
ok2=driver.find_element_by_css_selector('#dropdownlistContentdrpSchoolManagement > input').send_keys('Pvt. Unaided')
#driver.refresh()
time.sleep(10)
ok3=driver.find_element_by_css_selector('#btnSearch')
ok3.click()
time.sleep(4)
答案 0 :(得分:0)
错误"selenium.common.exceptions.ElementNotInteractableException: Message: Element could not be scrolled into view"
表示您的程序尝试与之交互的元素无法滚动到视图中。
要解决此问题,您可以引入WebDriverWait
,然后单击或使用element.location_once_scrolled_into_view
,然后单击该元素。
或者您可以使用Java Scripts executor
单击元素。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#btnSearch"))).click()
OR
ok3=driver.find_element_by_css_selector('#btnSearch')
ok3.location_once_scrolled_into_view
ok3.click()
OR
ok3=driver.find_element_by_css_selector('#btnSearch')
driver.execute_script("arguments[0].click();",ok3)