如何在 firefox 中使用 webdriver 将密钥发送到 phone 字段?

How do I send keys to phone field using webdriver in firefox?

   package erjan.testNG.personal_cabinet;

    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.testng.Assert;
    import org.testng.annotations.Test;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.AfterMethod;

    public class Login_test {
      WebDriver firefox ;
      @Test
      public void f() {
          WebElement login_form

 = firefox.findElement(By.id("login-form")) ;

      WebElement phone_field = firefox.findElement(By.className("phone-username")) ;

      WebElement password_field = firefox.findElement(By.xpath("//input[@type=\"text\"]"));

      Assert.assertNotNull(login_form) ;
      Assert.assertNotNull(phone_field) ;
      Assert.assertNotNull(password_field);


      phone_field.sendKeys("4457653245");

      String x = phone_field.getText() ;
      System.out.println("here we go!!!!!!!!! " + x) ;


  }

  @BeforeMethod
  public void beforeMethod() {

      firefox = new FirefoxDriver();
      firefox.get("http://test.naimi.me/astana/login");

  }

  @AfterMethod
  public void afterMethod() {
  }

}

我看到 firefox 打开,但我没有看到我的号码被插入到 phone 字段中! 或者它发生得很快?或者可能是因为它必须以某种方式标准化?

我是否应该以某种方式 "slow down" 输入以查看它是按数字输入的? 我应该使用显式等待吗?

你说你没有看到它,但你得到 x 中的值了吗?不要减慢代码速度,而是尝试 运行 通过 IDE 中的调试模式或包含一些日志记录语句以帮助您查看代码在做什么。

尝试一件事,如果字段中已有文本,请先清除该文本字段:

phone_field.clear();
phone_field.sendKeys("4457653245");

这不是时间问题。

许多表单可能会在接受文本之前请求激活,因此 一种有价值的方法是找到元素,单击它然后插入文本。

phone_field.click();
phone_field.sendKeys("4457653245");

尝试使用以下方法:

getDriver().findElement(locator).sendKeys(Keys.chord("phone number formatted"));