i am trying to perform a loop over school from all districts and blooks and collect the data from table. but when i use click() for go button it shows error ("StaleElementReferenceException: Message: stale element reference: element is not attached to the page document") in (" if (k.text=='Select School'):")line. can anyone help me.
import requests
import scrapy
import selenium
from bs4 import BeautifulSoup
import csv
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.support.ui import Select
driver=webdriver.Chrome()
url='https://rajshaladarpan.nic.in/SD1/Home/Public/EmployeeSearch.aspx'
driver.get(url)
driver.find_element_by_css_selector('#ContentPlaceHolder1_EmployeeDetail_rbtSchOffSeclection').click()
driver.find_element_by_css_selector('#ContentPlaceHolder1_EmployeeDetail_btnSearch').click()
dist=Select(driver.find_element_by_xpath('/html/body/form/div[3]/div[5]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div[3]/div[1]/div[1]/div/select'))
for i in dist.options:
if i.text == '--Select District--':
continue
dist.select_by_visible_text(i.text)
print(i.text)
dis.append(i.text)
block=Select(driver.find_element_by_xpath('/html/body/form/div[3]/div[5]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div[3]/div[1]/div[2]/div/select'))
for bloc in block.options:
if (bloc.text == 'Select Block') or (bloc.text == 'ALL') or (bloc.text == ''):
continue
block.select_by_visible_text(bloc.text)
print(bloc.text)
time.sleep(10)
school=Select(driver.find_element_by_xpath('/html/body/form/div[3]/div[5]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div[3]/div[2]/div[1]/div[2]/select'))
for k in school.options:
if (k.text=='Select School'):
continue
print(k.text)
time.sleep(2)
school.select_by_visible_text(k.text)
driver.find_element_by_xpath('//*[@id="ContentPlaceHolder1_EmployeeDetail_Button6"]').submit()
time.sleep(10)