Ich schrieb diesen Code, um einige Klicks zu simulieren, um Zitate von einer Google-Gelehrtenseite zu erhalten.selen (find_by_id) Methode funktioniert nicht innerhalb einer for-Schleife
def APAcite (papers):
gscholar= 'https://scholar.google.com/scholar?hl=en&q='
cites = []
for p in papers:
print(p)
address = gscholar + p
Nbrowser = webdriver.Chrome(chrome_p)
Nbrowser.get(address)
Nbrowser.find_element_by_link_text('Cite').click()
APA = Nbrowser.find_element_by_id('gs_cit1').click()
Bib = Nbrowser.find_element_by_link_text('BibTeX').click()
cit_pg = browser.find_element_by_css_selector('''body > pre''')
cites.append(cit_pg.text)
Nbrowser.close()
return cites
Dann definiert ich eine Liste der Papiere
l = ['Sustainability and the measurement of wealth: further reflections']
aber wenn ich es laufen, bekomme ich folgende Fehlermeldung:
<ipython-input-309-4208af266f79> in APAcite(papers)
8 Nbrowser.get(address)
9 Nbrowser.find_element_by_link_text('Cite').click()
---> 10 APA = Nbrowser.find_element_by_id('gs_cit1').click()
11 Bib = Nbrowser.find_element_by_link_text('BibTeX').click()
12 cit_pg = browser.find_element_by_css_selector('''body > pre''')
. . .
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"gs_cit1"}
Obwohl ich die Seite untersuchen und bekommen Sie sicher, dass diese ID id for selected element
Einen weiteren Punkt vorhanden ist, wenn ich den Code außerhalb der Funktion und ohne die for
Schleife laufen, ich habe keine Fehler bekommen und es funktioniert gut!
Können Sie bitte dabei helfen.
Dank viel Festsetzung .. . Lief wie am Schnürchen! –
Verwenden Sie keine implizite Wartezeit. Es ist eine schlechte Übung. Stattdessen fügen Sie eine explizite Wartezeit hinzu, z. warten Sie, bis das Element anklickbar ist, und klicken Sie dann darauf, und es wird funktionieren. – JeffC