无法使用 WebDriver 在文本字段中输入文本

Unable to enter text into text fields using WebDriver

我试图在两个文本字段中输入文本,我尝试了几乎所有的元素定位器、Javascript 技巧,但文本就是没有输入到字段中。测试通过,但我可以看到没有输入任何文本。

我练习的网站是https://www.chegg.com/auth?action=login&redirect=http%3A%2F%2Fwww.chegg.com%2F&reset_password=0

这两个字段是电子邮件和密码字段。

这应该有效但没有,提供代码片段:

WebElement emailField = driver.findElement(By.name("email"));

WebElement passwordField = driver.findElement(By.name("password"));

emailField.sendKeys("whatever");

passwordField.sendKeys("whatever");

我做错了什么?

您找不到的原因是定位器有多个匹配项。尝试这样查找:

WebElement emailField = driver.findElement(By.xpath("//div[@id='eggshell-7']//input[@name='email']")).sendKeys("whatever");

如果您仍然无法发送,请尝试在 sendkeys

之前发送 clear()

实际上,在您提供的 website 中,使用 By.name() 定位器存在两个元素,其中第一个元素不可见,第二个元素可见,您正在与页面上不可见的第一个元素进行交互。这就是你遇到麻烦的原因,你应该尝试一些不同的定位器来定位正确的元素,我建议你尝试使用 By.cssSelector() 如下:-

WebElement emailField = driver.findElement(By.cssSelector(".C-common-auth-signin-component input[name = 'email']"));
emailField.sendKeys("whatever");

WebElement passwordField = driver.findElement(By.cssSelector(".C-common-auth-signin-component input[name = 'password']"));
passwordField.sendKeys("whatever");