使用selenium时,在尝试以登录形式输入用户名和密码时,有时会在同一字段中输入文本。用户名和密码具有唯一标识符。
要发送密钥,请执行以下步骤。
sendKeys(By.id("login_username"), "abc");
sendKeys(By.id("login_password"), "efg");
public void sendKeys(By locator, String text) {
WebElement element = findElement(locator);
if(element != null) {
element.clear();
element.sendKeys();
}
}
public WebElement findElement(By locator) {
return wait(org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated(locator));
}
public WebElement wait(ExpectedCondition<WebElement> condition) {
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver).pollingEvery(1, TimeUnit.SECONDS)
.withTimeout(60, TimeUnit.SECONDS)
.ignoreAll(Arrays.asList(NoSuchElementException.class, TimeoutException.class));
return wait.until(condition);
}
但不知何故,在输入文本时,用户名和密码文本都会输入到密码字段中。但这并不总是发生。无法理解可能出现的问题或检查内容。任何建议......
platform: Ubuntu 16.04.1 LTS 64-bit
chromedriver version: 2.25
chrome browser version: 55.0.2883.87
提前致谢。
答案 0 :(得分:0)
sendKeys()
操作执行以下步骤:
如果在启动动作时元素无法聚焦(例如,因为它被禁用),或者坐标在获取坐标和单击/聚焦元素之间发生变化(因为布局仍在变化),可能会出错
另一个常见原因可能是挂在元素上的onClick动作,这会导致竞争条件。在没有看到实际页面的情况下,有可能在点击硒后,在键入文本时onClick操作仍然有效。这基本上是这样的:
作为一种解决方案,您可以尝试直接聚焦元素,并在发送密钥之前等待它真正聚焦。 This问题可能适用于此案例。