尝试一些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 >
我无法通过手动输入来再现场景。
--------------------------------一些新东西---------------- -----------------
当我手动输入密码时,我发现它检测到我输入的单词数。
然后我在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。
所以我想知道解决这个问题的关键是什么。