Как отправить данные в текстовое поле даты с помощью Selenium? - PullRequest
0 голосов
/ 22 апреля 2019

Это пример моей кодировки, в которую я хочу отправить данные, и она работает.Это выпадающий элемент.

driver.FindElement(By.XPath("//ul[@id='select2-ctl00_ContentPlaceHolder1_FormEngine1_mf_18a384bd-8919-4aa7-b953-528b33a775dd_ddlGroup-results']/li[. ='" & roaData(3) & "']")).Click()

Вот настоящая проблема, с которой я сталкиваюсь.Ниже приведен код, который я хочу отправить данные элементу, но он не работает.Я хочу отправить данные даты, но данные не перехватываются.Элемент представляет собой текстовое поле календаря.

driver.FindElement(By.XPath("//input[@id='ctl00_ContentPlaceHolder1_FormEngine1_ctl61_txtDate']")).SendKeys(UCase(Format(roaData(2), "dd MMMM yyyy")))

Любое решение, ребята?Спасибо: D

1 Ответ

0 голосов
/ 22 апреля 2019

Не видя HTML целевого элемента и того, что содержит roaData(2), не очень легко определить, в чем проблема, но, как и большинство элементов ввода, содержимое текстового поля обычно находится в атрибуте value. Поэтому вместо SendKeys() я рекомендую использовать setAttribute():

driver.FindElement(By.XPath("//input[@id='ctl00_ContentPlaceHolder1_FormEngine1_ctl61_txtDate']")).setAttribute("value", roaData(2).ToString("dd MMMM yyyy").ToUpper())

Также обратите внимание, что UCase и Format - это старые функции эпохи VB6, существующие только для обеспечения обратной совместимости с этим языком. Я заменил их вариантами .NET DateTime.ToString() (при условии, что roaData(2) на самом деле имеет тип Date) и String.ToUpper().

...