I am trying to build a scraper using selenium package for python but I am getting this error:
Message: stale element reference: element is not attached to the pag
Before you attempt to interact with the desired elements you have to induce WebDriverWait for the element_to_be_clickable()
and you can use either of the following Locator Strategy:
import selenium
driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
titles=[]
for link in links:
driver.get(link)
data = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class = 'question-hyperlink']")))
titles.append(data[0].text)
It seems synchronization issue while iterating list of links.
Induce WebDriverWait
() and wait for visibility_of_all_elements_located
() and then iterate and store in the list.
Use try..except block to handle.
Code:
titles=[]
for link in links:
driver.get(link)
try:
data=WebDriverWait(driver,10).until(EC.visibility_of_all_elements_located((By.XPATH,'//a[@class = "question-hyperlink"]')))
for d in data:
titles.append(d.text)
except:
print("element not found")
continue
You need to import below libraries.
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By