吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1344|回复: 7
收起左侧

[已解决] 请教python使用selenium解决JavaScript的弹出框的解决方法

[复制链接]
Heart灬欣 发表于 2020-7-1 22:54
本帖最后由 Heart灬欣 于 2020-7-3 12:18 编辑

我想使用selenium写一个教务系统自动评教的小工具,但是遇到了一个必须点击的一个对话框。不知道这个怎么解决,请大佬给一个思路,我比较小白,学的不多。。。


我查看了网页源代码:脚本内容如下:
'''
<script language="javascript">
                function saveData(obj, status) {
                        var pj06xhs = document.getElementsByName("pj06xh");
                        //逻辑问题,选择一个时,就可以通过,jun.l modified by 2013-12-19
                        /*
                        var flag = false;
                        for (i = 0; i < pj06xhs.length; i++) {
                                var pj0601s = document.getElementsByName("pj0601id_"+ pj06xhs.value);
                                for (j = 0; j < pj0601s.length; j++) {
                                        if (pj0601s[j].checked) {
                                                flag = true;
                                                break;
                                        }
                                }
                        }
                        */
                        
                        var flag = true;
                        for (i = 0; i < pj06xhs.length; i++) {
                                if(jQuery("input[name='pj0601id_"+ pj06xhs.value+"']:checked").length == 0) {
                                        flag = false;
                                        break;
                                }
                        }
                        if (!flag) {
                                alert("评价的每项指标都必须选择!");
                                return false;
                        }
                        flag = false;
                        var minZb = 0;//取到最小指标数
                        for (i = 0; i < pj06xhs.length; i++) {
                                var pj0601s = document.getElementsByName("pj0601id_"+ pj06xhs.value);
                                minZb = pj0601s.length;
                                break;
                        }
                        
                        for(j = 0; j < minZb; j++) {
                                var _ind = 0;
                                for (i = 0; i < pj06xhs.length; i++) {
                                        var pj0601s = document.getElementsByName("pj0601id_"+ pj06xhs.value);
                                        if (j < pj0601s.length && pj0601s[j].checked) {
                                                _ind++;
                                        }
                                }
                        if (_ind == pj06xhs.length) {
                                flag = true;
                                break;
                        }
                }
               
                if(flag){
                        alert("请不要选相同一项!");
                        return false;
                }
                if (status == "1") {
                        document.getElementById("issubmit").value = "1";
                } else {
                        document.getElementById("issubmit").value = "0";
                }
               
                if(status == "1" && !confirm("您是否确认提交当前评价,提交后不能修改!")) {
                } else {
                        obj.disabled = true;
                        obj.style.color = "#dddddd";
                        document.getElementById("Form1").submit();
                }
        }
</script>

'''
jiaowu w.png
jiaowu.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

处女-大龙猫 发表于 2020-7-1 23:41
感觉和我们学校差不多, 你f12试试能不能调试《确定》这个按钮?貌似是chrome的弹窗, 不能搞。
roc0838 发表于 2020-7-1 23:42
应真先生 发表于 2020-7-2 00:52
要不试一下输入enter按键点击?selenium很久不用了
Jack-lee 发表于 2020-7-2 07:29
https://www.bilibili.com/video/BV1Z4411o7TA?p=26
天真Aro 发表于 2020-7-2 07:33
前几天写评教脚本也遇到这个问题,可以试试这个办法,导入 from selenium.webdriver.common.alert import Alert,然后实例    ale = Alert(driver),最后在弹出alert下 接受它:    ale.accept()  # 接受弹窗


井右寺 发表于 2020-7-2 09:12
还有一种方式,你自己注入js代码,把alert拦截了
重写alert,让它使用你自己的逻辑,比如
[JavaScript] 纯文本查看 复制代码
function alert(msg){
    // pass
}

function confirm(msg){
    return true;
}
无法撤销 发表于 2020-7-2 10:04
井右寺 发表于 2020-7-2 09:12
还有一种方式,你自己注入js代码,把alert拦截了
重写alert,让它使用你自己的逻辑,比如
[mw_ ...

然后除了你这一段,其他的全删除!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 15:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表