Der Teil I zu klicken bin versucht:Weird-Python Selen-Knopf klicken, Verhalten
<ul class="btns right">
<li><a href="javascript:void(0)" onclick="hr_expand_event_tab_all("")" class="expand-all" id="btn_expand_all_10580503">View All Cards</a></li>
</ul>
Ziemlich einfach, dachte ich. Aber ich vermisse etwas.
Die Frage ist jetzt ein wenig weiter unten auf der Seite aktualisiert. Der Xpath ist nicht das Problem, das ich mit korrigiertem Xpath versucht habe, und es ist das gleiche wie mit dem Klassennamen. CSS hat mehrere Versionen der Schaltfläche versteckt, aber eine allgemeine.Exception wird auf diejenigen geworfen, die tatsächlich mit xpath oder dem Klassennamen gefunden werden.
Ich habe überprüft, die Seite ist richtig geladen und das Element ist da. Ich habe einen Check, um zu warten, bis die ganze Seite geladen ist und Screenshots, um sicher zu gehen.
loadbutton = Driver.find_element_by_xpath("//a[@class='expand-all']")
Gibt:
<class 'selenium.common.exceptions.ElementNotVisibleException'>
So habe ich versucht, einen Onclick mit dem Anker zu finden:
loadbutton = Driver.find_element_by_xpath("//li[contains(@onclick, 'View All Cards')]")
Mit dem gleichen Ergebnis. Ich habe ein bisschen Regex ausprobiert, um die ID-Varianten zu erfassen, aber ich bin mir nicht sicher, wo ich hier falsch liege. Es gibt ein Onlick und es ist geladen, aber ich kann es nicht finden.
Ich würde jemanden schätzen, der mir zeigen kann, was ich an diesem hier falsch mache.
/Update:
Stellt sich heraus, es gibt mehrere Versionen der Taste einige sichtbar sind und andere nicht.
I geschlungen:
loadbutton = Driver.find_elements_by_xpath("//a[@class='expand-all']")
for button in loadbutton:
print "button found"
Es mehrere Ergebnisse auftauchten. Die früheren sind versteckt, aber die am Ende sind sicherlich in meinem Browser und dem Screenshot angezeigt. Also habe ich erwartet, dass die ersten fehlschlagen und habe einen .click() mit einem Versuch hinzugefügt: außer: und sie alle haben immer noch versagt. Ich habe das nicht erwartet.
Weitere Update:
So lief ich dies:
loadbutton = Driver.find_elements_by_xpath("//a[@class='expand-all']")
for button in loadbutton:
print "button found"
try:
button.click()
except:
e = sys.exc_info()[0]
print e
Das erste Paar gab mir dies:
<class 'selenium.common.exceptions.ElementNotVisibleException'>
OK erwartet die CSS es versteckt ist. Die letzten beiden, die das gab angezeigten:
<class 'selenium.common.exceptions.WebDriverException'>
So kann er sie sehen. Es wird nicht auf sie klicken. "Gemeinsame Ausnahme" scheint nicht allzu hilfreich zu sein.
Scheint so, als ob die Schaltfläche mit CSS versteckt ist. Können Sie die Schaltfläche sehen, wenn Sie diese Seite in Ihrem Browser aufrufen? – Tony
** // */a [enthält (text(), 'Alle Karten anzeigen')] ** versuche diesen xpath, deine xpath-Konstruktion scheint falsch zu sein – theRoot
Warum all das mit xpath zu tun, wenn die Taste eine ID hat? – e4c5