Kyle Lagerquist
Kyle Lagerquist

Reputation: 25

Entering Credit Card Number Java Selenium

I am attempting to fill the field on this website that asks for credit card, however selenium it not allowing me to send keys into the field. I believe this is because you must initially click on the field, but for some reason I can not get it to do that either. Does anyone have any insight?

Website: https://givingday.northeastern.edu/pages/giving-page-2

> Under "Club Sports" click "Give", then click "Archery", then click "Next" to get to CC field

package com.demo.testcases;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.Select;

public class StackOverFlow{

  static WebDriver driver;
  static WebDriverWait wait;

  public static void main(String[] args) throws InterruptedException {

    driver = new ChromeDriver();
    driver.manage().window().maximize();
    wait = new WebDriverWait(driver, 40);
    driver.get("https://givingday.northeastern.edu/pages/giving-page-2");

    Thread.sleep(1000);

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".campaign-tiles-content")));

    scrollDown(driver, "scroll(0,500)");

    Thread.sleep(1000);

    driver.findElement(By.xpath("//a[text()='Club Sports']/parent::div/following-sibling::div[@class='inline-b']"
    + "/descendant::button")).click();

    Thread.sleep(1000);

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".giving-form-billing")));

    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//h3[text()='Archery']")));

    Thread.sleep(1000);

    driver.findElement(By.xpath("//button[text()='load more causes']")).click();

    Thread.sleep(1000);

    driver.findElement(By.xpath("//h3[text()='Archery']")).click();

    Thread.sleep(1000);

    driver.findElement(By.xpath("//div[@class='flex-it']/descendant::input")).clear();

    driver.findElement(By.xpath("//div[@class='flex-it']/descendant::input")).sendKeys("1");

    Thread.sleep(1000);

    driver.findElement(By.xpath("//button[text()='Next']")).click();


  }

  public static void scrollDown(WebDriver driver, String YoffSet){
    JavascriptExecutor jse = (JavascriptExecutor)driver;
    jse.executeScript(YoffSet);
  }
}

Upvotes: 0

Views: 3462

Answers (2)

Saurabh Patidar
Saurabh Patidar

Reputation: 1

public void enterCardDetails(String cardNumber) throws Throwable {

    System.out.println(cardNumber.length());// it will print your card length
    for (int i = 0; i < cardNumber.length(); i++) { 
        char c = cardNumber.charAt(i); 
        String s = new StringBuilder().append(c).toString(); 
        driver.findElement(By.xpath("//*[@id='ccard_number']")).sendKeys(s); 
    }
}

Note: You have to define and call cardnumber as per your requirement.

Upvotes: 0

Nahide Erg&#252;n
Nahide Erg&#252;n

Reputation: 51

There is a frame on this credit card input. You should first switch to frame then you can send a key.

driver.switchTo().frame(driver.findElement(By.id("spreedly-number-frame-1398")));

driver.findElement(By.id("card_number")).sendKeys(keysTosend);

Upvotes: 1

Related Questions