Как установить значение для ввода веб-элемента с помощью селена?

У меня есть элемент в моем коде, который выглядит так:

<input id="invoice_supplier_id" name="invoice[supplier_id]" type="hidden" value="">

Я хочу установить его значение, поэтому я создал веб-элемент с его xpath:

 val test = driver.findElements(By.xpath("""//*[@id="invoice_supplier_id"]"""))

но теперь я не вижу возможности установить значение...


person Joe    schedule 01.02.2016    source источник
comment
Если вы работаете с идентификатором, вы должны использовать соответствующий By-Locator: By.id("invoice_supplier_id")   -  person Peter Wippermann    schedule 01.02.2016
comment
В настоящее время вы собираете список WebElements. Вам нужно будет извлечь WebElement из списка или просто найти WebElement сам по себе. Вам также нужно будет отобразить элемент, прежде чем Selenium сможет с ним взаимодействовать.   -  person Ardesco    schedule 01.02.2016


Ответы (2)


Используйте findElement вместо findElements

driver.findElement(By.xpath("//input[@id='invoice_supplier_id'])).sendKeys("your value");

ИЛИ

driver.findElement(By.id("invoice_supplier_id")).sendKeys("value", "your value");

ИЛИ с помощью JavascriptExecutor

WebElement element = driver.findElement(By.xpath("enter the xpath here")); // you can use any locator
 JavascriptExecutor jse = (JavascriptExecutor)driver;
 jse.executeScript("arguments[0].value='enter the value here';", element);

ИЛИ

(JavascriptExecutor) driver.executeScript("document.evaluate(xpathExpresion, document, null, 9, null).singleNodeValue.innerHTML="+ DesiredText);

ИЛИ (в JavaScript)

driver.findElement(By.xpath("//input[@id='invoice_supplier_id'])).setAttribute("value", "your value")

Надеюсь, это поможет вам :)

person Shubham Jain    schedule 01.02.2016
comment
Отправить ключи к скрытому элементу? - person Kim Homann; 01.02.2016
comment
У меня возникает такая же проблема. Но такого метода setAttribute в WebElement нет. Любое другое предложение? - person Narayan Subedi; 02.07.2017
comment
@NarayanSubedi, у меня работает метод sendKeys driver.findElement(By.id(elementId)).sendKeys(значение, новое значение); - person eeadev; 07.12.2017
comment
попробуйте использовать send_keys вместо sendKeys - person wadhwa94; 11.04.2018
comment
Любой, у кого есть проблемы с этим методом, может попробовать sqa.stackexchange.com/questions/3387/ - person unholy_me; 04.06.2018
comment
Вы должны использовать это в последних версиях driver.find_element_by_id("invoice_supplier_id").send_keys("your value") - person atheesh27; 10.06.2019

Как сказал Шубхам Джайн, это работает для меня: driver.findElement(By.id("invoice_supplier_id")).sendKeys("value"‌​, "new value");

person eeadev    schedule 07.12.2017