Die Webautomatisierung von PayPal Advanced Checkout schlägt manchmal in Selenium Java fehl
Posted: 08 Jan 2025, 08:29
Ich automatisiere den Checkout-Prozess auf einer NopCommerce-Website mit PayPal Advanced als Zahlungsmethode. Meistens funktioniert die Automatisierung, aber manchmal gelingt es nicht, die Zahlung abzuschließen.
Wenn die Zahlung funktioniert, sieht das PayPal-Formular so aus:
Paypal-Zahlungsformular erfolgreich< /p>
Wenn dies fehlschlägt, sieht das Formular so aus:
Fehlgeschlagenes Paypal-Zahlungsformular
Der Hauptunterschied besteht darin, wie die Kartennummer angezeigt wird. mit Leerzeichen zwischen jeweils vier Ziffern, wenn es funktioniert.
Zuerst habe ich die sendKeys-Methode in meinem Selenium-Code verwendet:
Ich dachte, das Senden der gesamten Kartennummer auf einmal könnte das Problem sein, also habe ich es so geändert, dass jeweils nur eine Nummer gesendet wird:
Selbst mit dieser Änderung tritt das Problem manchmal immer noch auf. Ich habe versucht, vor und nach dem Ausfüllen der Kartennummer Wartezeiten hinzuzufügen, aber das Problem tritt immer noch auf. Der Fehler ist zufällig – manchmal funktioniert es, manchmal nicht.
Was könnte dieses Problem verursachen und wie kann ich den PayPal Advanced-Checkout in meiner Automatisierung zuverlässiger machen?
Wenn die Zahlung funktioniert, sieht das PayPal-Formular so aus:
Paypal-Zahlungsformular erfolgreich< /p>
Wenn dies fehlschlägt, sieht das Formular so aus:
Fehlgeschlagenes Paypal-Zahlungsformular
Der Hauptunterschied besteht darin, wie die Kartennummer angezeigt wird. mit Leerzeichen zwischen jeweils vier Ziffern, wenn es funktioniert.
Zuerst habe ich die sendKeys-Methode in meinem Selenium-Code verwendet:
Code: Select all
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(60));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@title='paypal_card_number_field']")));
WebElement cardNumberInput = wait.until(ExpectedConditions.elementToBeClickable(By.name("number")));
cardNumberInput.click();
cardNumberInput.clear();
cardNumberInput.sendKeys(cardNumber);
driver.switchTo().defaultContent();
Code: Select all
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(60));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@title='paypal_card_number_field']")));
WebElement cardNumberInput = wait.until(ExpectedConditions.elementToBeClickable(By.name("number")));
cardNumberInput.click();
cardNumberInput.clear();
Actions actions = new Actions(driver);
for (char c : cardNumber.toCharArray()){
actions.sendKeys(String.valueOf(c)).pause(500).perform();
}
driver.switchTo().defaultContent();
Was könnte dieses Problem verursachen und wie kann ich den PayPal Advanced-Checkout in meiner Automatisierung zuverlässiger machen?