Hallo,
heute mal wieder die KrünKraft Website:
Mein Python Selenium Skript soll auf folgender Seite: GrünKraft Zufriedenheit (gruenkraft-zufriedenheit.de) den Button PayPal-Konto drücken. Danach sollte sich dann ein input Feld auftun, welches dann ausgefüllt werden soll.
<div class="column-left w-col w-col-5">
<label class="radio-button-field-2 left w-radio">
<input type="radio" id="paypal" name="payout" value="paypal" data-name="payout" required="" class="w-form-formradioinput radio-button w-radio-input">
<span for="paypal" class="radio-button-label-2 w-form-label">PayPal-Konto</span>
</label>
</div>
Den Code für das Inputfeld lasse ich jetzt mal weg, da es wirklich nur ein Input Feld ist.
Mein erster Code:
from selenium import webdriver
import time
driver = webdriver.Chrome('C:/Users/.../Desktop/Python/chromedriver.exe')
driver.maximize_window()
driver.get('https://gruenkraft-zufriedenheit.de/')
element = driver.find_element_by_id("paypal")
time.sleep(4)
element.click()
Wenn ich den Code der Website richtig verstanden habe, dann muss man doch zuerst auf den gestylten Radiobutton drücken, damit das Inputfeld erscheint. Führe ich dann aber den oben gezeigten Code aus, dann kommt die Meldung: "Other element would receive the click" und zwar anscheinend das Textfeld darunter. Warum ist das so?
Ein Code der funktioniert ist folgender:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("https://gruenkraft-zufriedenheit.de/")
wait = WebDriverWait(driver, 10)
driver.find_element_by_xpath("//span[text()='PayPal-Konto']").click()
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input[name='paypal-email-2']"))).send_keys('some-email@gmail.com')
Da wird gewartet, bis das Element sichtbar wird( Was heiß das dann schon wieder? ) und offensichtlich wird nicht der Radiobutton, sondern das span Element angeklickt. Warum funktioniert das dann?
Danke