无法使用 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");
我试图在两个文本字段中输入文本,我尝试了几乎所有的元素定位器、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");