记录paython selenium 测试vue的单选框的一次踩坑(明明单击已经成功了,但是调试脚本时页面不展示出来)

先说踩坑的教训:vue框架因为页面代码会实时改变,不要通过运行代码时弹出的浏览器判断是否成功,尤其是涉及到页面代码实时变化的部分,可以通过get_arrtibute方法输出一下看看
《记录paython selenium 测试vue的单选框的一次踩坑(明明单击已经成功了,但是调试脚本时页面不展示出来)》
上图就是要测试的单选框,下图就是对应的页面代码
《记录paython selenium 测试vue的单选框的一次踩坑(明明单击已经成功了,但是调试脚本时页面不展示出来)》
可以看到,现在“展示”按钮已经被选中了,对应的页面代码中第一条红线标出的元素,这里的class值是el-radio is-checked。然后隐藏按钮没有被选中,第二条红线标出来的代码中class的值是el-radio,明显能看出来这里是选中的class里面有is-check(这里是重点)。
由于不是重点,选中页面元素啥的我就不提了,我用的chrome浏览器以及配套的chromedriver,简单点说就是,这里我通过find_by_css_selector(label.elradio)也就是class的el-radio的值成功选中了页面上 “隐藏” 那个单选项的元素,然后 .click()发送单机动作。
然后调试代码的时候发现弹出来的浏览器窗口中永远是这样的,没有程序也没有报错,但是就是没有选中那个 “隐藏” 选项

《记录paython selenium 测试vue的单选框的一次踩坑(明明单击已经成功了,但是调试脚本时页面不展示出来)》

在经过无数尝试,包括使用actionchain的单击,按住,拖动都不行之后,我开始怀疑
是不是单击已经成功了,因为单击之后页面class会发生改变,但是调试代码时通过chromedriver调用的chrome浏览器不能实时反映出class的改变(从没有is-chekced变成有is-checked)
然后我把之前通过find方法记录下来的元素保存起来,单击之后再把class打印出来。

elem=driver.find_element_by_css_selector(label.el-radio) //这里class元素可以用点.连接
elem.click()
print(elem.get_attribute("class"))

然后发现程序运行完打印出来的是el-radio is-checked
可以看到第一行使用find定位页面元素的时候是通过el-radio定位元素的,然后相同元素使用click方法之后,获取class内容变成了el-radio is-checked也就是说的单击方法已经成功了

最后,本次得到的教训就是:vue框架因为页面代码会实时改变,不要通过运行代码时弹出的浏览器判断是否成功,尤其是涉及到页面代码实时变化的部分,可以通过get_arrtibute方法输出一下看看

    原文作者:不破红尘
    原文地址: https://blog.csdn.net/u013882336/article/details/114134971
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞