因此,我尝试打开一个网站,然后导航到某个页面,其中包含我必须从中抓取数据的页面。我能够提供输入,但在到达最终提交按钮之前,我收到错误“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)
该错误"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)
归档时间: |
|
查看次数: |
7538 次 |
最近记录: |