Я пытаюсь смоделировать вход на сайт с помощью pyqt5.
Разветвление базового кода из проекта ниже, потому что его автоматический вход не удался, поэтому я пытаюсь это исправить:
https://github.com/CaoZ/JD-Coin/blob/287af555c530d68b095018416b67c7d2fb1bad73/app/browser.py#L103
Первый
Я добавляю jquery перед выполнением другого кода:
jquery_file = Path(__file__).parent.joinpath('../js_libs/jquery-3.3.1.min.js')
with open(jquery_file) as f:
self.page().runJavaScript(f.read())
Второй
Я изменяю этот кусок кода к
if host == 'plogin.m.jd.com':
code = """
$('.planBLogin').click();
console.log($('#username'));
console.log($('#pwd'));
setTimeout(function() {{
console.log(11111);
console.log($('#username'));
console.log($('#pwd'));
$('#username').click();
$('#username').focus();
$('#username').trigger('touchstart');
$('#username').trigger('touchend');
$('#username').trigger('ontouchstart');
$('#username').trigger('ontouchend');
$('#username').val('{username}');
$('#pwd').click();
$('#pwd').focus();
$('#pwd').trigger('touchstart');
$('#pwd').trigger('touchend');
$('#pwd').trigger('ontouchstart');
$('#pwd').trigger('ontouchend');
$('#pwd').val('{password}');
}}, 4000);
setTimeout(function() {{
console.log(2222222);
if ({auto_submit}) {{
$('.btn.J_ping').addClass('btn-active');
$('.btn.J_ping').click();
}} else {{
$('#username').focus();
}}
}}, 6000);
"""
Но val не работает вообще.
результат
Единственное изменение
фокус на input#pwd
изменение класса кнопки $ ('. btn.J_ping'). addClass ('btn-active');
После просмотра html я думаю, что этот сайт может использовать report-eventid="MLoginRegister_Username"
, чтобы что-то сделать. Я не склонен знать логи c этого сайта, потому что у нас всегда должен быть способ высмеивать действия пользователя.
Независимо от того, какую технику он использует, мы должны издеваться над касанием или щелчком, чтобы заставить его действовать так же, как мы используем мышь / палец. Вопрос только в том, как мне ввести имя пользователя и pwd, просто посмеиваясь над поведением пользователя (не анализируя код API или js).