Использование JavaScriptExecutor в Selenium с Java - принимает значение, но не отображает его в поле - PullRequest
0 голосов
/ 20 апреля 2020

Из-за некоторых вещей, которые я делаю с моей автоматизацией, я пытаюсь сохранить числа в виде целых чисел, текст в виде строковых типов и т. Д. c. WebDriver не «посылает ключи», когда они целые, поэтому я сделал это, используя javascript. Первым, что я сделал, было поле последних 4 цифр кредитной карты, и я успешно справился с этой строкой кода:

jse.executeScript("document.getElementById('PaymentInfo_CCLast4Digits').setAttribute('value', '" + lastFour + "')");

Как вы можете видеть, с помощью инструментов разработчика и Во-первых, все так, как и должно быть.

dev tools showing value for last 4 field

Теперь у меня также есть поле, называемое Количество. Вот код jse для этого:

jse.executeScript("document.getElementById('Quantity').setAttribute('value', '" + productQuantity + "')");

И вот что происходит:

dev tools for jse version of quantity

Теперь, как вы можете видеть, значение равно 324, но оно не будет отображаться в поле количества. НО, если я изменю тип переменной на String и передам его через обычный веб-драйвер:

driver.findElement(By.id("Quantity")).sendKeys(productQuantity);

, тогда он будет вести себя как ожидалось:

Quantity from webdriver

Кто-нибудь знает, почему это произойдет? Вот различия, которые я вижу в последнем поле 4 из CC, где он работает с jse, и в поле «Количество», где его нет:

1) Поле «Последнее 4 CC» имеет тип = текст "где поле Количество равно" тип = число "

2) Поле Количество имеет те маленькие стрелки вверх и вниз, предположительно потому, что оно имеет тип = число

Что-то еще, что я пропустил? Кто-нибудь еще достаточно разбирается в этом, чтобы понять, почему 324 не отображается в поле «Количество», когда я отправляю его с помощью jse, несмотря на то, что инструменты разработчика показывают, что значение действительно равно 324, и оно отображается, когда я отправляю его через Вебдрайвер как строка?

Спасибо большое!

Скотт

1 Ответ

1 голос
/ 21 апреля 2020

Интересно !! Можете ли вы попробовать

jse.executeScript("document.getElementById('Quantity').value='324';");

Я пробовал это на тестовой странице, для меня вышеупомянутый код и setAttribute (как вы используете) также работали нормально. «324» должно быть вписано в число в обоих случаях.

Надеюсь, это сработает для вас.

enter image description here enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...