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
相关产品推荐
相关产品推荐

