Попробуйте установить значение элемента, используя метод executeScript
:
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('elementID').setAttribute('value', 'yourValue')");
РЕДАКТИРОВАТЬ:
Но, как уже упоминалось @JeffC, это не «ясное» решение.Лучше вы можете увидеть ниже.
Как вы можете видеть здесь , текстовое поле работает следующим образом:
- вы должны нажать на первый вводчерез этот xPath:
//ul[@id = 'fieldlist']/li[1]/label/span/span/input[1]
![enter image description here](https://i.stack.imgur.com/iTkH5.png)
именно это поле ввода:
![enter image description here](https://i.stack.imgur.com/hDzkk.png)
Перед нажатием на первый вход второй вход
![enter image description here](https://i.stack.imgur.com/8phtU.png)
имел display:none
.И теперь у него есть display:inline-block
, поэтому мы можем выполнить действие sendKeys()
над этим (вторым) элементом через этот xPath //ul[@id = 'fieldlist']/li[1]/label/span/span/input[2]
.
То же самое вы можете сделать в вашем случае.
PS в коде это будет выглядеть так:
WebElement firstInput = driver.findElement(By.xpath("//ul[@id = 'fieldlist']/li[1]/label/span/span/input[1]"));
firstInput.click();
new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[@id = 'fieldlist']/li[1]/label/span/span/input[2]")); // waits until second input becomes visible
WebElement secondInput = driver.findElement(By.xpath("//ul[@id = 'fieldlist']/li[1]/label/span/span/input[2]"));
secondInput.sendKeys("55");