如何修复“selenium.common.exceptions.JavascriptException:消息:javascript错误:$未定义”

2024-09-30 18:33:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这段代码在使用selenium的网页上提交验证码

    driver.execute_script('$.ajax({ type: "get", url: "' + str(driver.current_url).split('.com')[1] + '?g-recaptcha-response=' + g_response + '"}).done((html) => $("body").html(html) );')

这是提交我在网页上找到的验证码的正确且唯一的功能。早些时候效果还不错。但几天前,它开始给出这个错误

selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined

我试着用“document”和“Jquery”替换“$”。。等等,但没有成功。有人知道如何修复这个错误吗?还是以其他方式提交验证码?如果有帮助的话,我也会留下我在页面上找到的javascript

        var pickValidationRecaptcha;
        function pickValidateRecaptchaCallback() {
            pickValidationRecaptcha = grecaptcha.render('pickValidationRecaptcha', {
                'sitekey': recaptchaKey,
                'callback': function (resp) {
                    $.ajax({
                        type: "get",
                        url: "/pick/c6c23d46985a97ae5fbdc7c13ad2aa60?g-recaptcha-response=" + resp
                    }).done(function (html) {
                        $("body").html(html);
                    });

                },
                'expired-callback': function () {
                    try {
                        grecaptcha.reset(reportRecaptcha);
                    }
                    catch (e) {
                    }
                }
            });
        }
        $(document).ready(function () {
            setTimeout(function () {
                if ($("#pickValidationRecaptcha").length > 0) {
                    pickValidateRecaptchaCallback();
                }
            }, 1000);
        });
        $(document).ajaxComplete(function () {
            setTimeout(function () {
                if ($("#pickValidationRecaptcha").length > 0) {
                    pickValidateRecaptchaCallback();
                }
            }, 1000);
        });
    

我正在使用第一个函数,它工作得很好。当我在开发者选项控制台上运行它时,它仍然有效。 任何帮助都将不胜感激。 多谢各位


Tags: url网页getresponsehtmltypedriverselenium