How to fix stale element error without refreshing the page

2024/10/10 16:22:27

Trying to get details of Tyres on this page. https://eurawheels.com/fr/catalogue/INFINY-INDIVIDUAL . Each tyre has different FINITIONS. The price and other details are different for each FINITIONS. I would like to click on each FINITION type. The problem is that on clicking the FINITION type the links go stale, and You cannot refresh the page, if you do it will take you back to the starting page. So, How can I avoid stale element error without refreshing the page?

     count_added = Falsebuttons_div = driver.find_elements_by_xpath('//div[@class="btn-group"]')fin_buttons = buttons_div[2].find_elements_by_xpath('.//button')fin_count = len(fin_buttons) if fin_count > 2:for z in range(fin_count):if not count_added:z = z + 2 #Avoid clicking the Titlecount_added = Truefin_buttons[z].click()finition = fin_buttons[z].texttime.sleep(2)driver.refresh() #Cannot do this. Will take to a different page
Answer

To clarify: the stale element is thrown because the element is no longer attached to the DOM. In your case is this: buttons_div = driver.find_elements_by_xpath('//div[@class="btn-group"]') that its being used as parent in the fin_buttons[z].click()

To solve this you'll have to "refresh" the element once the DOM changes. You can do that like this:

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome(executable_path="D:/chromedriver.exe")driver.get("https://eurawheels.com/fr/catalogue/INFINY-INDIVIDUAL")driver.maximize_window()driver.find_elements_by_xpath("//div[@class='card-body text-center']/a")[1].click()def click_fin_buttons(index):driver.find_elements_by_xpath('//div[@class="btn-group"]')[2].find_elements_by_xpath('.//button')[index].click()def text_fin_buttons(index):return driver.find_elements_by_xpath('//div[@class="btn-group"]')[2].find_elements_by_xpath('.//button')[index].textsleep(2)
count_added = False
buttons_div = driver.find_elements_by_xpath('//div[@class="btn-group"]')
fin_buttons = buttons_div[2].find_elements_by_xpath('.//button')
fin_count = len(fin_buttons) 
if fin_count > 2:for z in range(fin_count):if not count_added:z = z + 2 #Avoid clicking the Titlecount_added = Trueclick_fin_buttons(z)finition = text_fin_buttons(z)sleep(2)print(finition)#driver.refresh() #Cannot do this. Will take to a different page
https://en.xdnf.cn/q/118436.html

Related Q&A

Fastest way in numpy to get distance of product of n pairs in array

I have N number of points, for example: A = [2, 3] B = [3, 4] C = [3, 3] . . .And theyre in an array like so: arr = np.array([[2, 3], [3, 4], [3, 3]])I need as output all pairwise distances in BFS (Bre…

How to get argument to ignore part of message

I just wondering how to get the if statement(if 0 < int(message.content)< 153:) to only test part of the message, not the full message.content. Eg: if I put in 1s 100, I want it to test if ONLY t…

how can I limit the access in Flask

I create a project to simulate login my companys website.And put it in my server to let others to use.But the company website has a limit with single ip can only open 2 sessions.So when more than 2 my …

Multiple images numpy array into blocks

I have a numpy array with 1000 RGB images with shape (1000, 90, 90, 3) and I need to work on each image, but sliced in 9 blocks. Ive found many solution for slicing a single image, but how can I obtai…

Python - Transpose columns to rows within data operation and before writing to file

I have developed a public and open source App for Splunk (Nmon performance monitor for Unix and Linux Systems, see https://apps.splunk.com/app/1753/)A master piece of the App is an old perl (recycled, …

Unexpected output while sorting the list of IP address [duplicate]

This question already has answers here:Python .sort() not working as expected(8 answers)Closed last year.I am trying to sort the list of ipaddress from the following list. IPlist= [209.85.238.4, 216.23…

Google Cloud Run returning Server Unavailable Occasionally

I am running a Flask app at https://recycler-mvdcj7favq-uc.a.run.app/ on Google Cloud Run and occasionally I get 503 server unavailable while refreshing a few times seems to load the page. Also, someti…

Connecting to Internet?

Im having issues with connecting to the Internet using python.I am on a corporate network that uses a PAC file to set proxies. Now this would be fine if I could find and parse the PAC to get what I nee…

Angular App Not Working When Moving to Python Flask

Not sure what information to give so will do as much as I can. Currently have an Angular app sitting on IIS and using Classic ASP. All works fine. There is a dropdown which fetches some JSON that then …

How can I subtract tuples in a list?

Lets say I have a list with tuples in it.Something like this:listnum = [(18,12),(12,20)]Is there a way I can subtract what is in the tuples and make listnum into:listnum = [6,8]As you can see It takes …