【问题标题】:Selenium - Text entered in same field, even though intended to type in different fieldsSelenium - 在同一字段中输入的文本,即使打算在不同的字段中输入
【发布时间】:2016-12-26 06:48:58
【问题描述】:

使用 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

提前致谢。

【问题讨论】:

  • 给我们你使用的定位器和页面 URL
  • 页面 URL 是内部的。用户名 id = login_username / 密码 id = login_password
  • 添加一些你的代码被剪断。怎么样,你正在尝试定位和html 以及
  • 如何获取定位器?driver.findElement(By.id("login_username"))

标签: java selenium selenium-webdriver selenium-chromedriver ubuntu-16.04


【解决方案1】:

sendKeys() 操作执行以下步骤:

  • 获取元素的坐标
  • 点击获得的坐标(使用鼠标操作)
  • “类型”文本(将由当前聚焦的任何元素接收)

如果在开始操作时元素无法聚焦(例如因为它被禁用),或者如果在获取坐标和单击/聚焦元素之间坐标发生变化(因为布局仍在变化),则可能会出错.

另一个常见的原因可能是 onClick 操作挂在元素上,这可能导致竞争条件。在没有看到实际页面的情况下,单击 selenium 后,可能在键入文本时 onClick 操作仍在工作。这基本上看起来像这样:

  • 硒点击
  • onClick 操作开始(元素可能仅在完成后才获得焦点)
  • Selenium 开始输入(onClick 还没有 尚未返回,因此错误的元素会获取文本)
  • onClick 动作结束,但到那时 Selenium 也结束了。

作为一种解决方案,您可以尝试直接聚焦元素,并等到它真正聚焦后再发送键。 This 问题可能对这种情况有用。

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 2013-10-08
    • 2022-01-08
    • 1970-01-01
    • 2015-11-11
    • 2020-11-21
    • 2023-01-17
    • 1970-01-01
    相关资源
    最近更新 更多