无法将 sendKeys() 发送到输入文本字段
Unable to sendKeys() into input text field
我打算在以下网站上自动执行一个简单的表单填写 Junit 测试:https://newdesign.millionandup.com
我尝试向其发送密钥的输入文本字段是用 id=email 标识的,我尝试了以下两种方法:
1.
WebElement passInput = driver3.findElements(By.className("sidebar__item-text")).get(0); // this xPath does the trick
wait.until(ExpectedConditions.visibilityOfElementLocated(emailLocator));
passInput.click();
passInput.sendKeys("emailID");
Thread.sleep(3000); // only to see the result
WebElement em1 = driver3.findElement(emailLocator);
JavascriptExecutor jse = (JavascriptExecutor)driver3;
//driver3.findElement(emailLocator).sendKeys(emString);
Thread.sleep(1000);
jse.executeScript("arguments[0].click()", em1);
jse.executeScript("arguments[0].value='prisoner24601@gouvernement.fr';", em1);
if (em1.isSelected()) {
System.out.println("email typed");
} else {
System.out.println("unable to send keys, element not interactable");
}
在这两种情况下都无济于事,文本字段仍然不可交互,我无法在其中输入数据。
编辑:正如评论中所建议的,我尝试了第三种方式:
3.
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id='email']")));
System.out.println("email input located");
element.click();
System.out.println("email input clicked");
element.sendKeys(emString);
元素实际上已定位,但是,一旦调用方法 click() 或 sendKeys(),执行将在声明“元素不可交互”后停止
xpath - //input[@id='email']
匹配 DOM 中的 9 个元素。找到独特的定位器很重要 - Link to refer
Register 的弹出窗口在鼠标移动时打开。鼠标移动后,将能够查看弹出元素并与之交互。
在 xpath 下使用将键发送到元素 Email Address
,它对我有用。
//form[@id='frmLeadModal']//input[@id='email']
像下面这样尝试一次,它可能也适合你。
driver.get("https://newdesign.millionandup.com/#initial");
WebDriverWait wait = new WebDriverWait(driver, 30);
Actions actions = new Actions(driver);
actions.moveByOffset(100, 100).perform();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//form[@id='frmLeadModal']//input[@id='email']"))).sendKeys("example@email.com");
我打算在以下网站上自动执行一个简单的表单填写 Junit 测试:https://newdesign.millionandup.com
我尝试向其发送密钥的输入文本字段是用 id=email 标识的,我尝试了以下两种方法: 1.
WebElement passInput = driver3.findElements(By.className("sidebar__item-text")).get(0); // this xPath does the trick
wait.until(ExpectedConditions.visibilityOfElementLocated(emailLocator));
passInput.click();
passInput.sendKeys("emailID");
Thread.sleep(3000); // only to see the result
WebElement em1 = driver3.findElement(emailLocator);
JavascriptExecutor jse = (JavascriptExecutor)driver3;
//driver3.findElement(emailLocator).sendKeys(emString);
Thread.sleep(1000);
jse.executeScript("arguments[0].click()", em1);
jse.executeScript("arguments[0].value='prisoner24601@gouvernement.fr';", em1);
if (em1.isSelected()) {
System.out.println("email typed");
} else {
System.out.println("unable to send keys, element not interactable");
}
在这两种情况下都无济于事,文本字段仍然不可交互,我无法在其中输入数据。
编辑:正如评论中所建议的,我尝试了第三种方式:
3.
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id='email']")));
System.out.println("email input located");
element.click();
System.out.println("email input clicked");
element.sendKeys(emString);
元素实际上已定位,但是,一旦调用方法 click() 或 sendKeys(),执行将在声明“元素不可交互”后停止
xpath - //input[@id='email']
匹配 DOM 中的 9 个元素。找到独特的定位器很重要 - Link to refer
Register 的弹出窗口在鼠标移动时打开。鼠标移动后,将能够查看弹出元素并与之交互。
在 xpath 下使用将键发送到元素 Email Address
,它对我有用。
//form[@id='frmLeadModal']//input[@id='email']
像下面这样尝试一次,它可能也适合你。
driver.get("https://newdesign.millionandup.com/#initial");
WebDriverWait wait = new WebDriverWait(driver, 30);
Actions actions = new Actions(driver);
actions.moveByOffset(100, 100).perform();
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//form[@id='frmLeadModal']//input[@id='email']"))).sendKeys("example@email.com");