如题:webbrowser中如何模拟点击下拉列表(select)选项doc.getElementByID("grade").selectedIndex = 3
doc.getElementByID("grade").Options(3).Selected =true用以上两种方法都可以”表面上“选择指定选项,如图:
但点击提交按钮时,它实际上是无效的(显示为灰色字体),又会恢复为”选择年级“。
手动选择时是这样显示的(黑色字体),这样才是有效的选择:附节选网页源代码
<select name="grade_id" id="grade" style="color: rgba(100, 100, 100, 0.4);">
<option value="" hidden="hidden" style="color: black;">选择年级</option> 
<option value="1" style="color: black;">一年级(小学)</option>
<option value="2" style="color: black;">二年级(小学)</option>
<option value="3" style="color: black;">三年级(小学)</option>
<option value="4" style="color: black;">四年级(小学)</option>
<option value="5" style="color: black;">五年级(小学)</option>
<option value="6" style="color: black;">六年级(小学)</option>
<option value="7" style="color: black;">七年级(初一)</option>
<option value="8" style="color: black;">八年级(初二)</option>
<option value="9" style="color: black;">九年级(初三)</option>
<option value="10" style="color: black;">高一(高中)</option>
<option value="11" style="color: black;">高二(高中)</option>
<option value="12" style="color: black;">高三(高中)</option>
</select>要怎样才能有效选择某个选项呢?
请大神帮帮忙

解决方案 »

  1.   


    多谢提醒!我不确定是select元素的通病还是网站程序的设定。好像是select固有的问题。麻烦您帮我试试。直接发网址怕会违规,发个图
      

  2.   

    我这两天有点忙哦,对了,我打漏字
    我还说方法不是已说了嘛
    现在只记得一个了你直接赋值行不行??前晚也在点联动下拉框,最后解决办法就是直接规换选项。<option value="" hidden="hidden" style="color: black;">选择年级</option>变成
    <option value="1" hidden="hidden" style="color: black;">你要的文字</option>value=" "  选择年级  都改成你的值
      

  3.   

    你的填写是方法是没问题,不生效是因为网页检测了一些事件,网页在这些事件代码里做了些其他的事,例如检查合法性,然后设置样式浅灰为纯黑等等,应该在下面加上一句触发事件,你可以查看下元素看看这个select具体绑定了哪些事件。一般都会有个onchange事件,或者就是onclick事件doc.getElementByID("grade").Options(3).Selected =true
    doc.getElementByID("grade").onchange其中doc.getElementByID("grade")可以改为:doc.all.grade,这样要简洁得多doc.all.grade.onchange如果报错可以尝试:
    doc.all.grade.fireEvent "onchange"另外,如果你的这个页面里加载了jquery库的话就更加方便了,可以用:
    WebBrowser1.Document.parentWindow.ExecScript "$('#grade').val('3').change();"红色为WebBrowser执行js代码的固定用法,绿色为jquery代码。是不是超简洁?你试下,如果不能用可以自己加载个jquery库,方法:
    WebBrowser1.Document.parentWindow.execScript "var script = document.createElement('script');script.src = 'https://cdn.staticfile.org/jquery/1.11.2/jquery.min.js';document.getElementsByTagName('head')[0].appendChild(script);"
      

  4.   


    多谢版主大大!又学到了。
    但是按照您说的触发onchange或onclick,还是不行。难点在于我不太看得懂它的js脚本。脚本地址:https://exam.jxeduyun.com/static/js/app.7b529c2703a42c0be8f7.js
      

  5.   

    这js太长,而且打乱的,我也看不懂,你应该看那个select元素绑定了哪些事件,具体方法:右击它在菜单中选择查看元素,如果你用的Firefox的话一般这个元素后面会有个浅灰色的event,然后点击这个event看它绑定了哪些事件,如果是chrome的话点击这个元素节点,然后右边会有显示。
      

  6.   


    难就难在这个元素后没有event,而它这个js代码又是乱的。按理它的event无外乎onclick,onchange,但试了fireEvent这两个event,都没效果。我试过了一般的select,可以用上面我的方法选择某项,所以应该不是select固有的通病,正如您所说,这个网页应该是用了代码来检测。难道无解吗?真的很想知道解决办法,不搞明白谁都睡不着啊
      

  7.   


    难就难在这个元素后没有event,而它这个js代码又是乱的。按理它的event无外乎onclick,onchange,但试了fireEvent这两个event,都没效果。我试过了一般的select,可以用上面我的方法选择某项,所以应该不是select固有的通病,正如您所说,这个网页应该是用了代码来检测。难道无解吗?真的很想知道解决办法,不搞明白谁都睡不着啊加q远程看看呢