$ ('. xxx'). va ('xxx') не работает в QWebEngineView (PyQt5) - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь смоделировать вход на сайт с помощью 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 не работает вообще.

результат

Единственное изменение

  1. фокус на input#pwd

  2. изменение класса кнопки $ ('. btn.J_ping'). addClass ('btn-active');

enter image description here


После просмотра html я думаю, что этот сайт может использовать report-eventid="MLoginRegister_Username", чтобы что-то сделать. Я не склонен знать логи c этого сайта, потому что у нас всегда должен быть способ высмеивать действия пользователя.

Независимо от того, какую технику он использует, мы должны издеваться над касанием или щелчком, чтобы заставить его действовать так же, как мы используем мышь / палец. Вопрос только в том, как мне ввести имя пользователя и pwd, просто посмеиваясь над поведением пользователя (не анализируя код API или js).

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