元素(按钮)无法滚动到视图中

1 python selenium

因此,我尝试打开一个网站,然后导航到某个页面,其中包含我必须从中抓取数据的页面。我能够提供输入,但在到达最终提交按钮之前,我收到错误“selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到视图中”。有任何想法吗 ?

我试图引入等待方法,但它仍然没有给出有用的结果,反而减慢了网站的速度。下面是代码。

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)
Run Code Online (Sandbox Code Playgroud)

Kun*_*duK 7

该错误"selenium.common.exceptions.ElementNotInteractableException: Message: Element could not be scrolled into view"意味着您的程序尝试与之交互的元素无法滚动到视图中。

为了克服这个问题,您可以引入WebDriverWait并单击或element.location_once_scrolled_into_view先使用然后单击该元素。

或者您可以使用Javascript's 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()
Run Code Online (Sandbox Code Playgroud)

或者

ok3=driver.find_element_by_css_selector('#btnSearch')
ok3.location_once_scrolled_into_view
ok3.click()
Run Code Online (Sandbox Code Playgroud)

或者

ok3=driver.find_element_by_css_selector('#btnSearch')
driver.execute_script("arguments[0].click();",ok3)
Run Code Online (Sandbox Code Playgroud)