浏览器不接受密码输入框的Selenium sendKeys

时间:2018-06-29 07:05:27

标签: selenium-webdriver jmeter

尝试一些Selenium Web自动化。 sendKeys(“ 123456”)到密码输入框中,填写smsCode。然后点击提交按钮。它提供了错误提示:“银行卡密码必须为6个数字,请重新填写。”我尝试了这三种发送方式,但给出了相同的错误提示:

var passwordField = WDS.browser.findElement(pkg.By.id('_ocx_password'))
passwordField.click()

passwordField.sendKeys(["123456"])

passwordField.sendKeys("123456")

passwordField.sendKeys(org.openqa.selenium.Keys.NUMPAD1)
passwordField.sendKeys(org.openqa.selenium.Keys.NUMPAD2)
passwordField.sendKeys(org.openqa.selenium.Keys.NUMPAD3)
passwordField.sendKeys(org.openqa.selenium.Keys.NUMPAD4)
passwordField.sendKeys(org.openqa.selenium.Keys.NUMPAD5)
passwordField.sendKeys(org.openqa.selenium.Keys.NUMPAD6)

有人可以告诉我如何处理并成功提交吗?非常感谢。

有关该问题的更多信息,我在下面给出了密码输入框和提交按钮的元素结构:

<div id="debitCard_password">
<input type="text" onfocus="this.type='password';pgeCtrl.openProt('password1530252XX13701',this.id);pgeCtrl.setCX(this);" onkeydown="pgeCtrl.setSX(event,'',this);" onclick="pgeCtrl.setCX(this)" onblur="pgeCtrl.closeProt('password15302529613701',this.id)" id="_ocx_password" style="ime-mode:disabled" tabindex="2" class="ocx_atm" value=""></div>

<p style="padding-top:0px">
                                <input id="btnCardPay" name="btnCardPay" type="button" value="开通并付款" class="btn_blue139p CardDefault">
                            </p >

我无法通过手动输入来再现场景。

--------------------------------一些新东西---------------- -----------------

enter image description here

当我手动输入密码时,我发现它检测到我输入的单词数。

enter image description here

自动键入太短,无法检测单词数。 enter image description here

然后我在sendKeys之后放置一行:java.lang.Thread.sleep(5000)。但是这些词在睡眠开始时就消失了,因此键入的词数为0。

我想使用另一种发送方法。

var passwordField = WDS.browser.findElement(pkg.By.id('_ocx_password'))
var actions = new org.openqa.selenium.interactions.Actions(WDS.browser)
actions.keyDown(passwordField, "123456")
actions.pause(1000);

它会引发如下错误:

TypeError:无法调用方法[jdk.internal.dynalink.beans.OverloadedDynamicMethod  动作org.openqa.selenium.interactions.Actions.keyDown(Keys)  动作org.openqa.selenium.interactions.Actions.keyDown(WebElement,Keys)

var errorMsg = new java.lang.String()
var e = new java.awt.AWTException(errorMsg)
try {
    var robot = new java.awt.Robot()

    var loc = new org.openqa.selenium.Poin()
    loc = passwordField.getLocation();
    WDS.log.info(loc.getX()+2, loc.getY()+2)

    // Simulate a key press
    robot.mouseMove(loc.getX()+2, loc.getY()+2);
    robot.mousePress(java.awt.event.InputEvent.BUTTON1_MASK);
    robot.keyPress(java.awt.event.KeyEvent.VK_1);
    robot.keyPress(java.awt.event.KeyEvent.VK_3);
    robot.keyPress(java.awt.event.KeyEvent.VK_5);
    robot.keyPress(java.awt.event.KeyEvent.VK_2);
    robot.keyPress(java.awt.event.KeyEvent.VK_4);
    robot.keyPress(java.awt.event.KeyEvent.VK_6);
    robot.delay(10000);
    robot.mouseRelease(java.awt.event.InputEvent.BUTTON1_MASK);
    } catch (e) {
        e.printStackTrace()
        WDS.log.info(e)
}

它会抛出这样的错误:

java.lang.ClassNotFoundException:org.openqa.selenium.Poin。

所以我想知道解决这个问题的关键是什么。

0 个答案:

没有答案