无法使用硒sendKeys在文本字段中输入字符

时间:2019-10-02 21:32:53

标签: java selenium xpath css-selectors webdriverwait

我正在尝试在文本字段中输入字符,但是它不起作用。下面我提到了2条代码。 JS根本不工作。如在第一段代码中所示,单击有效,但其他步骤无效。 Xpath是正确的,因为单击正在处理该问题。

    util.driver.findElement(By.xpath("//input[@id='input-1']")).click();
    util.driver.findElement(By.xpath("//input[@id='input-1']")).clear();
    util.driver.findElement(By.xpath("//input[@id='input-1']")).sendKeys("hjgfjg");
JavascriptExecutor js = (JavascriptExecutor) util.driver;

js.executeScript("document.getElementByXpath('//input[@id='input-1']').value = 'TEST')");

enter image description here

3 个答案:

答案 0 :(得分:1)

所需元素是动态元素,因此要对该元素调用sendKeys(),必须为elementToBeClickable()引入 WebDriverWait ,并且可以使用以下{{ 3}}:

  • cssSelector

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.slds-input[id^='input-'][aria-describedby^='help-message-']"))).sendKeys("hjgfjg");
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='slds-input' and starts-with(@id, 'input-')][starts-with(@aria-describedby, 'help-message-')]"))).sendKeys("hjgfjg");
    

答案 1 :(得分:0)

尝试使用Actions

WebElement input = util.driver.findElement(By.xpath("//input[@id='input-1']"));
Actions action = new Actions(util.driver);
action.moveToElement(input).click().sendKeys("test").build().perform();

正在导入:

import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;

答案 2 :(得分:0)

可能您可以尝试以下解决方法:

  1. 尝试先单击文本框,然后调用sendKeys()。
  2. Angular无法快速处理输入事件。 解决方法是,您需要发送单个字符,每个字符之间的延迟很小。

spatie/laravel-server-side-rendering

  1. 您可以尝试使用Actions类。