【问题标题】:Wrong text entered by sendkeyssendkeys 输入的文本错误
【发布时间】:2017-06-10 01:02:59
【问题描述】:

我正在尝试使我必须输入信用卡详细信息的网页自动化。 在手动输入信用卡的 CVV 期间,我可以继续前进,但在使用 sendkeys 输入值时会引发错误。

driver.findElement(By.name("password_ccCvv")).click();
driver.findElement(By.name("password_ccCvv")).sendKeys("999");

我尝试单击文本框,然后输入值。这也没有用。

通过发送密钥输入值时,我看不到正在发送的值,因为它已加密。

【问题讨论】:

  • 每次输入卡片详细信息后是否可以尝试发送 TAB 键事件?
  • IMO,CVV 字段不是制表符分隔的。谢谢
  • @Abhinav 试过了。还是不行。

标签: selenium selenium-webdriver webdriver sendkeys


【解决方案1】:

如果 Webdriver 无法使用标准方式(使用 sendKeys 方法)输入数据,您可以使用 JavaScriptExecuter 的解决方法,如下所示:

JavascriptExecutor e = (JavascriptExecutor)driver;
e.executeScript("arguments[0].setAttribute('value', arguments[1])", driver.findElement(By.name("password_ccCvv")), "999");

告诉我,它是否适合你。

【讨论】:

  • 我可以看到正在输入的值。但是一旦单击下一步;显示错误信息。当我手动输入相同的值时,不会显示任何错误消息。
【解决方案2】:

使用 javascriptexecute 试试这个并告诉我

在 Python 中

driver.execute_script("document.getElementById('password_ccCvv').value = '001';");

在 Java 中

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("document.getElementById('password_ccCvv').value = '001';");

【讨论】:

  • 我正在使用 Java,所以我尝试了第二个。我可以看到正在输入的值。但是一旦单击下一步;显示错误信息。当我手动输入相同的值时,不会显示任何错误消息。
  • 在我的代码中,它试图转到下一个元素。在 FE 上找不到 id == currentAcctEmailRadio 的元素“请输入有效的 CVV”
  • 我不清楚你遇到的错误是什么,你能描述得更清楚吗?
  • 当然。使用您上面提供的代码后。在 CVV 文本框中输入值。之后我必须点击下面的元素 driver.findElement(By.id("makePaymentButton")).click();因此,当执行此点击时,预计会转到下一个网页,但它没有;因为错误 CVV 不正确。
  • 可以分享网址吗?
【解决方案3】:

如果文本框中已有文本,请先使用以下方法清除它:

driver.findElement(By.name("password_ccCvv")).clear();
driver.findElement(By.name("password_ccCvv")).sendKeys("999"); 

或者只试试这个

driver.findElement(By.name("password_ccCvv")).sendKeys("999"); 

【讨论】:

  • 两种方法都试过了。问题是正在输入值,当我点击下一步时,我收到一个错误,指出 CVV 错误/不正确。
  • HTML 代码
【解决方案4】:
          while(driver.findElement(By.id("makePaymentButton")).isEnabled())
          {
          Thread.sleep(4000);
          driver.findElement(By.name("password_ccCvv")).sendKeys("999");
          Thread.sleep(4000);
          driver.findElement(By.id("makePaymentButton")).click();
          Thread.sleep(2000);
          }

这对我有用。我可以在第 3 次或第 4 次尝试中进行身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多