我正在尝试在登录表单中输入某些值:
| username | password |
| admin | adminpassword |
我使用Selenium Webdriver v.3和 geckodriver for Firefox 使用以下java代码将值发送到输入字段:
for (User user : users) {
base.driver.findElement(By.name("UserName")).sendKeys(user.username);
base.driver.findElement(By.name("Password")).sendKeys(user.password); }
因此我在UI上看到了:
用户: admin
密码: adminpas
当然,测试失败,因为密码不正确。我不明白为什么价值被削减从 adminpassword 到 adminpas ? 而且,每次我运行测试时:它会剪切差异字符数。
答案 0 :(得分:0)
1)检查是否会在其他浏览器上发生
如果是,请转到下面的第2点
如果不是,请检查webdriver是否与浏览器兼容,尝试使用不同的webdriver版本
2)检查绑定到密码框的任何键事件
在同样的情况下,开发人员绑定键事件以检查非法输入或在用户单击登录或执行其他操作之前检查系统是否具有Ajax后台中的此类用户。
如果是,则关键事件会破坏正常的sendKeys,请尝试在背景中通过javascript设置密码:
import org.openqa.selenium.JavascriptExecutor;
String script = "arguments[0].value=arguments[1]";
WebElement passwordBox = driver.findElement(By.name("Password"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(script, passwordBox, user.password);
// send a space or TAB to trigger key event
passwordBox.sendKeys(" ");
// passwordBox.sendKeys(Key.TAB);
如果不是,请回到第1点,尝试不同的webdriver和浏览器组合
//pom.xml
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version> // you can change to other version
</dependency>