ich bin ein wenig Ratlos. ich würde gerne bei einer Webseite die Table alle zeilen anklicken lassen. Damit ich die Details auslesen kann. Dies mache ich mit Selenium(zusätzlich Javascript) und zwar so:
#!/usr/bin/python3
from selenium import webdriver
#
#----///----
#
browser.execute_script("""
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function demo() {
console.log('Taking a break...');
await sleep(2000);
console.log('Two seconds later, showing sleep in a loop...');
// Sleep in loop
var el = document.getElementsByClassName('table__row table__row--details-trigger');
for (var i=0;i<el.length; i++) {
el[i].click();
await sleep(200);
console.log(i);
}
}
demo();
""")
Leider geht das so schnell das er nur die ersten 25-40 Rows aufklappt aber nicht alle. Ich habe um keine zusätzliche Fehler einzubauen den code aus Stackoverflow kopiert: https://stackoverflow.com/questions/951 ... n-of-sleep dieser beschreib wie man einen sleep in einer for loop schleife einbaut. okey funktioiert auch wenn ich das in einer HTML Datei ausführer. Leider jedoch nicht in Python. habe ich da ein denkfehler oder warum führt Javascript den sleep nicht aus?
nun das habe ich auch schon mal gemacht. in dem ich mit Selenium WebDriver gearbeitet habe. Leider jedoch werden die anklickbaren Elemente nicht freigegeben und ich muss deswegen JavaScript verweden. Erst wenn ich das Element mit JS anspreche, öffnet sich der Row. Aber das Problem liegt daran das die for schleife zu schnell ist. Und dann kommt als ergebnis, siehe Bild:
ein nachtträgliches warten seits python, wo eventuell die Daten nachgeladen werden hilft nicht....
.
Da Du weder die Seite noch Deinen Code zeigst, kann man nur sagen, dass Du da was in Deinem Python-Code falsch gemacht hast. Allgemein, Du mußt so lange warten, bis die Daten nachgeladen worden sind.