Seleniumchromedriver: Ausnahme von abgestandenem Element für das Span -Element verhindernPython

Python-Programme
Anonymous
 Seleniumchromedriver: Ausnahme von abgestandenem Element für das Span -Element verhindern

Post by Anonymous »

Ich versuche derzeit, die Sammlung von Daten von einer Website zu automatisieren. Die Site selbst pausiert nicht, während sie Daten laden. Daher habe ich meine Programme die angezeigte Anzahl zurückgegebener Suchergebnisse nach dem Eingeben einer Suchabfrage, um sicherzustellen, dass ich keine Daten sammle, bevor die Website das Laden aus der Datenbank beendet hat. Überprüfen Sie den Textabschnitt, in dem sich diese Nummer befindet, manchmal einen veralteten Referenzfehler. < /P>

Code: Select all

while TimingLoops < 5:
TimingLoops = TimingLoops+1
time.sleep(0.05)
newelement = driver.find_element(By.XPATH, "/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/span[1]")
newelementText = newelement.text
< /code>
Fehler < /p>
Exception has occurred: StaleElementReferenceException
Message: stale element reference: stale element not found in the current frame
< /code>
Um den abgestandenen Referenzfehler zu verhindern, habe ich eine Codezeile eingefügt, um nach dem Vorhandensein des gewünschten Textes zu überprüfen. Ich gehe davon aus, dass der Wert in der Spannweite vielleicht während des Veränderungsprozesses verschwindet? Ich erwartete, dass diese Codezeile [url=viewtopic.php?t=29987]verhindern[/url] würde, dass mein Code vorwärts geht, bis das Element vorhanden war und zur Verwendung zur Verfügung steht. Verwende ich die falsche erwartete Bedingung, um dies zu tun? Meine Kenntnisse über HTML und Python sind beide ziemlich begrenzt. Vielleicht ist dies die falsche Art von Überprüfung für diesen Elementtyp? Ich habe versucht, einen Schecks zu verwenden, der jedoch nicht auf einem Tupel verwendet werden kann, und die Liste der erwarteten Selen -erwarteten Bedingungen durchsuchte, enthüllte nichts, was mich als geeigneter als die Bedingung aussprach, die ich jetzt verwende. < /P>
 while TimingLoops < 5:
TimingLoops = TimingLoops+1
time.sleep(0.05)
newelement = WebDriverWait(driver,120).until(
EC.presence_of_element_located((By.XPATH,
"/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/span[1]"))
)
newelementText = newelement.text
< /code>
und ich erhalte immer noch den Fehler < /p>
Exception has occurred: StaleElementReferenceException
Message: stale element reference: stale element not found in the current frame
Muss ich nur eine explizite Wartezeit verwenden? src = "https://i.sstatic.net/b3xbc.png"/>
Bearbeiten: Listen Sie den gesamten Codeblock auf, der zur Nachbildung des Fehlers erforderlich ist, einschließlich der empfohlenen Wartezeitbedingung durch Jeffc. Der Fehler erfolgt nach dem Eingeben einer Suche in die Suchleiste, nicht zuvor mit NewCount [0] .Text Ausnahme von abgestandenem Element Referenz. Manchmal kann es bis zu 20 oder 30 Mal dauern, bevor der Fehler geworfen wird. < /P>

Code: Select all

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

driver = webdriver.Chrome()
driver.get("https://bonap.net/TDC/")

GenusName = "Rudbeckia"
x=1
GenusCount = 0
wait = WebDriverWait(driver, 10)

while x

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post