用元素源代码区分元素状态

问题引入:

有些看着像复选框而不是复选框,无法用设置复选框指令,但是需要判断此时是否处于被选中状态,该怎么办?

标准的复选框(checkbox)和单选按钮(radio button):

用影刀捕获后,在这个元素的元素编辑界面,最后一级的 type 应为 radiocheckbox

解决办法:在这个网页元素上执行 JavaScript:

function (element, input) {
    return element.checked;
}

通过判断这个脚本的执行结果,判断这个按钮或框是否已经选中。True 为已经选中,False 为没有选中。

执行 JS 脚本指令配置:

流程执行逻辑:在 Chrome 浏览器中获取已打开的网页对象,保存在 web_page 中 -> 在 web_page 的“单选按钮 _radio-input”元素上执行上述 JavaScript 脚本,执行结果保存在 web_js_result 中 -> 打印 web_js_result。

执行结果:

该按钮已经选中。

注:不是只有 radio button 或 checkbox 才能用这个方法判断状态,遇到实际场景时建议尝试一下。

非标准复选框或单选按钮

按 F12 打开浏览器开发者工具,通过观察元素源代码可以知道,选中“赠送运费险”时,包含复选框的父元素会有 data-action 属性,不选中时则没有。

选中时:

<a class="filter icon-tag J_Ajax icon-hover" trace="filterbox" trace-filterid="filterYunFeiXian" href="#" data-url="filter" data-key="auction_tag[]" data-value="385" data-action="remove" uia-uid="0|12">
          <span class="icon icon-btn-check-big"></span>

            <span class="text ">赠送退货运费险</span>

        </a>

未选中时:

<a class="filter icon-tag J_Ajax " trace="filterbox" trace-filterid="filterYunFeiXian" href="#" data-url="filter" data-key="auction_tag[]" data-value="385" uia-uid="0|11">
          <span class="icon icon-btn-check-big"></span>

            <span class="text ">赠送退货运费险</span>

        </a>

于是捕获复选框元素的父元素:

判断逻辑:

流程执行逻辑:

获取已打开的网页,保存到 web_page -> 获取上面捕获的元素的源码 -> 如果源代码包含 data-action,打印 “已选中”,否则打印 “未选中”

问题没有解决?去社区提问 all right reserved,powered by Gitbook

results matching ""

    No results matching ""