有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Selenium将文本发送到密码字段

我正在尝试登录我的个人资料,但在尝试添加密码时遇到问题。我可以让光标显示在密码框中,但当尝试发送密钥时,它会引发异常。这是出于安全原因吗?密码是否隐藏在html/xml中以避免自动化

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class mainTester {

 static WebDriver driver;

public static void main(String[] args) throws InterruptedException{

    setUp();
}
public static void setUp() throws InterruptedException {
      // Optional, if not specified, WebDriver will search your path for chromedriver.
      System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");

      driver = new ChromeDriver();
      driver.get("http://www.google.com/xhtml");
    //  Thread.sleep(5000);  // Let the user actually see something!
      WebElement searchBox = driver.findElement(By.name("q"));
      searchBox.sendKeys("C programming forum");
      searchBox.submit();
      Thread.sleep(5000);
      driver.findElement(By.linkText("C Board - Cprogramming.com")).click();
      Thread.sleep(5000);  // Let the user actually see something!
      WebElement userEnter = driver.findElement(By.name("vb_login_username"));
      userEnter.sendKeys("myusername");
      WebElement userEnter2 = driver.findElement(By.name("vb_login_password_hint"));
      userEnter2.sendKeys("mypassword");
     // searchBox.submit();
      Thread.sleep(5000);  // Let the user actually see something!
      System.out.println("Finished");
      //driver.quit();

    }

}

html就是这样

<input type="text" class="textbox default-value" tabindex="102" name="vb_login_password_hint" id="navbar_password_hint" size="10" value="Password" style="display: inline;">

错误是

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: cannot focus element

共 (1) 个答案

  1. # 1 楼答案

    这个登录表单有点棘手,有两个密码输入,一个像“提示”一样显示在实际密码字段上。您需要做的是先单击“提示”,然后将密钥发送到真正的密码输入:

    WebElement passwordHint = driver.findElement(By.name("vb_login_password_hint"));
    passwordHint.click();
    
    WebElement passwordInput = driver.findElement(By.name("vb_login_password"));
    passwordInput.sendKeys("mypassword");