Java Selenium—在同一字段中输入的文本,即使要在不同字段中键入
使用selenium,尝试在登录表单中输入用户名和密码时,有时会在同一字段中输入文本。用户名和密码具有唯一标识符 要发送密钥,请执行以下步骤Java Selenium—在同一字段中输入的文本,即使要在不同字段中键入,java,selenium,selenium-webdriver,selenium-chromedriver,ubuntu-16.04,Java,Selenium,Selenium Webdriver,Selenium Chromedriver,Ubuntu 16.04,使用selenium,尝试在登录表单中输入用户名和密码时,有时会在同一字段中输入文本。用户名和密码具有唯一标识符 要发送密钥,请执行以下步骤 sendKeys(By.id("login_username"), "abc"); sendKeys(By.id("login_password"), "efg"); public void sendKeys(By locator, String text) { WebElement element = findEl
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);
}
提前感谢。操作执行以下步骤:
- 获取元素的坐标
- 在获得的坐标处单击(使用鼠标操作)
- “键入”文本(将由当前关注的任何元素接收)
- 硒点击
- onClick操作开始(元素可能只有在完成后才会聚焦)
- Selenium开始键入(onClick尚未键入) 尚未返回,因此错误的元素将获取文本)
- onClick 行动结束了,但到那时Selenium也完成了
- 获取元素的坐标
- 在获得的坐标处单击(使用鼠标操作)
- “键入”文本(将由当前关注的任何元素接收)
- 硒点击
- onClick操作开始(元素可能只有在完成后才会聚焦)
- Selenium开始键入(onClick尚未键入) 尚未返回,因此错误的元素将获取文本)
- onClick 行动结束了,但到那时Selenium也完成了
作为一种解决方案,您可以尝试直接聚焦元素,并在发送键之前等待它真正聚焦。这个问题可能在这种情况下有用。给我们您使用的定位器,页面URL页面URL是内部的。用户名id=login\u用户名/密码id=login\u密码添加一些被剪掉的代码。如何,您正在尝试定位和
html
以及如何获取定位器?driver.findElement(By.id(“login\u username”)
提供您使用的定位器,并且页面URL页面URL是内部的。用户名id=login\u用户名/密码id=login\u密码添加一些被剪掉的代码。如何查找和html
以及如何获取定位器?driver.findElement(By.id(“login\u username”)
platform: Ubuntu 16.04.1 LTS 64-bit
chromedriver version: 2.25
chrome browser version: 55.0.2883.87