[FIXED] Selen-Klick-Schaltfläche, während der Header-Name berücksichtigt wird

Ausgabe

Ich bin neu bei Selenium und möchte eine bestimmte Datei von einer Website herunterladen. Es gibt mehrere Klassen-Tags, wobei jeder die Überschrift in der Form „[Jahr] Jahresbericht“ hat. Das Folgende gilt für das Jahr 2017. Wie kann ich auf die Schaltfläche „Herunterladen“ klicken und gleichzeitig sicherstellen, dass dies die Schaltfläche für ein bestimmtes Jahr ist (z. B. 2017 und nicht 2015)?

<li class="" style="display: flex;">
                                <img src="/HostedData/_ara_prvw/68711.jpg" alt="1-800-FLOWERS.COM" title="1-800-FLOWERS.COM" width="182" height="235">
                                <div class="text_block">
                                    <span class="heading">2017 Annual Report</span>
                                    <span class="btn_archived view_annual_report">
                                        <a href="/HostedData/AnnualReportArchive/1/NASDAQ_FLWS_2017.pdf" title="View 2017 Annual Report (PDF)" target="_blank">View Annual Report</a>
                                    </span>
                                    
                                    <span class="btn_archived download">
                                        <a href="/HostedData/AnnualReportArchive/1/NASDAQ_FLWS_2017.pdf" download="">Download</a>
                                    </span>
                                </div>
                            </li>

Lösung

Für eine Seite, die Sie freigegeben haben, können Sie den folgenden XPath verwenden: //span[@class='btn_archived download'][.//a[contains(@href,'2017')]]

Der Selenium-Python-Befehl zum Klicken darauf kann also wie folgt lauten:

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

wait = WebDriverWait(driver, 20)

wait.until(EC.element_to_be_clickable((By.XPATH,"//span[@class='btn_archived download'][.//a[contains(@href,'2017')]]"))).click()

Tatsächlicher Code kann Scrollen und weitere erforderliche Aktionen enthalten. Entsprechend dem tatsächlichen Codefluss.


Beantwortet von –
Prophet


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like