selenium3: 控件被遮挡时,如何找到控件
这两天写web自动化,遇到一个小问题,记录一下。
问题
首先,先阐述一下问题:
我需要用定位时间控件做一个查询
显然,直接采取点击日历的方法很不靠谱(因为随着时间的变化,日历的展示也会变化),最好直接输入自己想要的日期,f12看一下控件属性,很开心,两个input框,直接send_keys一下就ok
代码执行以后,很打脸,因为send_keys的时候,会触发日历弹出,然后控件就被遮挡了,代码报错:
问题解决
在网上找了一下资料,用执行JavaScript的脚本可以解决此问题。
首先,我们通过<find_element_by_xpath>找到我们需要操作的控件,然后,通过执行 “driver.execute_script(‘arguments[0].value=“2019-10-25”’, webElement)” ,完成我们的动作。
这里剖析一下这一行代码,先看一下原函数:
execute_script的第三个参数可以时多个,也就是说,我们可以传入多个控件,通过arguments[0]可以拿到我们所需的控件,然后就可以.value去赋值 或者 .click等可以去对控件进行操作了