Я использую селен в C#. и я хочу передать число в поле ввода с помощью IJavaScriptExecutor.ExecuteScript ().
этот мой код:
int orderTypeIndex = -1; // assigned by ComboBox.SelectedIndex;
int priceTypeIndex = -1; // assigned by ComboBox.SelectedIndex;
string command = "";
private void button1_click(sender object, Event e)
{
if (orderTypeIndex == 0)
{
command += "$('button[ng-type=\"order1\"]')[0].click(); ";
}
else if (orderTypeIndex == 1)
{
command += "$('button[ng-type=\"order2\"]')[0].click(); ";
}
if (priceTypeIndex == 0)
{
command += "$('inputField[ng-type=\"price\"]').val('1000'); "; /***********************/
}
else if (priceTypeIndex == 1)
{
command += "$('inputField[ng-type=\"price\"]').val('2000'); "; /***********************/
}
else if (priceTypeIndex == 2)
{
command += "$('inputField[ng-type=\"price\"]').val('3000'); "; /***********************/
}
if (orderTypeIndex == 0){
command += "$('button[ng-type=\"order1\"]')[0].click(); ";
}
else if (orderTypeIndex == 1){
command += "$('button[ng-type=\"order2\"]')[0].click(); ";
}
command += "$('button[ng-type=\"submit\"]')[0].click(); ";
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript(command);
command = "";
}
inputPrices назначаются перед вызовом этого метода.
Проблема с этими строками комментариев:
Веб-сайт не принимает входное значение, когда значение передается input.val ('1000') , даже когда я запускаю с ним ключевые события. код ниже:
function trigger_event(element, key_code, type) {
let event = jQuery.Event(type);
event.which = event.keycode = event.charCode = key_code;
element.trigger(event)
}
s = '1000';
input.focus();
input.val(s + ' ');
for (var i = 0; i < s.length; i++) {
trigger_event(input, s.charCodeAt(i), 'keydown');
input.click();
trigger_event(input, s.charCodeAt(i), 'keypress');
trigger_event(input, s.charCodeAt(i), 'keyup');
}
trigger_event(input, 13, 'keydown');
input.click();
trigger_event(input, 13, 'keypress');
trigger_event(input, 13, 'keyup');
все равно, сайт знает, откуда он взялся. Что мне делать?
Примечание Я не люблю использовать функции селена, потому что они слишком медленные для того, что я хочу. когда я использовал функции селена, выполнение действия занимало много времени.
Примечание Мне нужно использовать язык C# или Python, потому что это другие вещи, которые он продолжает делать в фоновом режиме.