You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium自动化测试无法向借记卡支付输入框填入数据如何解决?

支付表单输入失败解决方案

核心问题有两个:一是支付表单嵌套在独立的iframe中,你没有将Selenium的操作上下文切换到iframe内部,无法正常定位到内部的输入元素;二是当前卡号的定位路径指向的是外层div容器,不是可输入的input元素,自然无法写入数据。按以下步骤修改即可:

  • 切换操作上下文到支付iframe
    你已经定位到了支付模块的iframe元素,在点击选择支付方式后,直接调用切换iframe的方法即可。
  • 修正输入框定位逻辑
    将卡号的定位路径改为指向真实的输入节点,有效期和安全码的id定位只要在iframe内部就可以正常命中。
  • 输入失败兜底方案
    如果遇到前端有输入拦截、实时校验导致sendKeys无效的情况,可以用JS注入的方式强制给输入框赋值。

修改后的代码示例:

WebElement BilMethod = wait.until(ExpectedConditions.elementToBeClickable(By.xpath
("/html/body/app-root/div/app-checkout/div/div/div/div[2]/div/div[1]/div/ng-stepper/div/div[2]/div[2]/app-address/div/div[3]/div[3]/div/div")));
BilMethod.click();
Thread.sleep(1000);

//点击下一步按钮
WebElement Clicknext = wait.until(ExpectedConditions.elementToBeClickable(By.xpath
        ("/html/body/app-root/div/app-checkout/div/div/div/div[2]/div/div[1]/div/ng-stepper/div/div[2]/div[2]/app-address/div/div[5]/div[2]/button")));
Clicknext.click();
Thread.sleep(10000);

//选择信用卡支付方式
WebElement creditcard = wait.until(ExpectedConditions.elementToBeClickable(By.xpath
        ("/html/body/app-root/div/app-checkout/div/div/div/div[2]/div/div[1]/div/ng-stepper/div/div[2]/div[3"
                + "/app-payment/div[2]/div[1]/div/div/div[2]/div/ngx-paypal/div/div/iframe[1]")));
creditcard.click();
System.out.println("We have selected Credit card method");

// 核心修改:切换上下文到支付iframe
driver.switchTo().frame(creditcard);

//输入卡信息,修正卡号定位到input节点
WebElement Card_No = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[1]/div/div/form/div/div[2]/div/div[1]/div/div/input")));
// 常规sendKeys输入
Card_No.sendKeys("5105105105105100");
// 如果常规输入失败用JS注入兜底
// ((JavascriptExecutor)driver).executeScript("arguments[0].value='5105105105105100'", Card_No);

WebElement expirydate = wait.until(ExpectedConditions.elementToBeClickable(By.id("expiry-date")));    
expirydate.sendKeys("1225");

WebElement cvc = wait.until(ExpectedConditions.elementToBeClickable(By.id("credit-card-security")));
cvc.sendKeys("123");

// 所有支付信息输入完成后,切回主页面上下文再操作后续按钮
// driver.switchTo().defaultContent();

内容的提问来源于stack exchange,提问作者Zaman10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 00:06:04