Dass ich - eigentlich wir - die Abfrage von ariva.de gerne automatisieren möchten, bitte ich als gegeben hinzunehmen. Auch hatte ich beileibe nicht nach einer Gesantlösung für das Problem gefragt, sondern nur gebeten, mir bei dem Unterproblem der Betätigung der Schaltfläche "Akteptieren und weiter" Unterstützung zu gewähren. Zahlreiche Stunden und Ansätze hatte ich schon investiert, leider bisher erfolglos. Das Problem ist zunächst so geartet, dass ich die Schaltfläche nicht ansprechen kann. Macht man einen Rechtsklick darauf und wählt im Webbrowser Firefox "Untersuchen (Q)", wird folgendes angezeigt:
Code: Alles auswählen
<button title="Akzeptieren und weiter" aria-label="Akzeptieren und weiter" class="message-component message-button no-children focusable sp_choice_type_11 first-focusable-el" style="opacity: 1; padding: 10px 15px; margin: 5px 10px 4px; border-width: 0px; border-color: rgb(0, 0, 0); border-radius: 5px; border-style: solid; font-size: 16px; font-weight: 400; color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; width: auto; background: rgb(68, 153, 68);">Akzeptieren und weiter</button>
Die meisten Tipps, auf die ich beim Googeln traf, legten das Ansprechen des Elements per Name oder ID zugrunde; beides kann ich hier nicht gebrauchen, meine ich. Und so habe ich folgendes schon versucht:
Code: Alles auswählen
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get(self.url)
driver.execute_script("document.cookie = 'cookieconsent_status=accepted';")
Dies führt aber nicht zur automatischen Betätigung der Schaltfläche. Um euch einen Eindruck zu vermitteln, was ich alles schon versucht habe, hier (sämtlich auskommentiert) meine Ansätze, allesamt ohne Erfolg und mit diversen Fehlermeldungen behaftet:
Code: Alles auswählen
# self.request_result = requests.get(self.url)
# options = webdriver.FirefoxOptions()
# driver = webdriver.Firefox(options=options)
# driver.get(self.url)
# l=driver.find_element_by_xpath("//a[@title='Akzeptieren und weiter']")
# driver.find_element_by_xpath('//*[@title="Akzeptieren und weiter"]').click()
# element = driver.find_element(By.XPATH, "//form[input/@aria-label ='Akzeptieren und weiter']")
# WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Akzeptieren und weiter']"))).click()
# acceptBtn = driver.find_element(By.CLASS_NAME, "message-component message-button no-children focusable sp_choice_type_11 first-focusable-el")
# browser.find_element_by_xpath('//*[@title="Akzeptieren und weiter"]').click()
# acceptBtn.click()
# button = driver.find_element(By.ID, "Akzeptieren und weiter")
# button.click();
# button = driver.find_element("css selector", "button[name='Akzeptieren und weiter']")
# button.click()
# button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "button[name='Akzeptieren und weiter']")))
# button.click()
@__deets__ , du sprachst ja nun von Abwehrmaßnahmen der Site gegen Webscraping. Vielleicht ist das der Grund, warum alles nichts fruchtet. Gerne wüsste ich, wie ich hier ein Stückchen weiter komme.
LG Strawk