selenium3: 控件被遮挡时,如何找到控件

这两天写web自动化,遇到一个小问题,记录一下。

问题

首先,先阐述一下问题:
我需要用定位时间控件做一个查询
selenium3: 控件被遮挡时,如何找到控件
显然,直接采取点击日历的方法很不靠谱(因为随着时间的变化,日历的展示也会变化),最好直接输入自己想要的日期,f12看一下控件属性,很开心,两个input框,直接send_keys一下就ok
selenium3: 控件被遮挡时,如何找到控件
selenium3: 控件被遮挡时,如何找到控件
代码执行以后,很打脸,因为send_keys的时候,会触发日历弹出,然后控件就被遮挡了,代码报错:
selenium3: 控件被遮挡时,如何找到控件
selenium3: 控件被遮挡时,如何找到控件

问题解决

在网上找了一下资料,用执行JavaScript的脚本可以解决此问题。
selenium3: 控件被遮挡时,如何找到控件
首先,我们通过<find_element_by_xpath>找到我们需要操作的控件,然后,通过执行 “driver.execute_script(‘arguments[0].value=“2019-10-25”’, webElement)” ,完成我们的动作。
这里剖析一下这一行代码,先看一下原函数:
selenium3: 控件被遮挡时,如何找到控件
selenium3: 控件被遮挡时,如何找到控件
execute_script的第三个参数可以时多个,也就是说,我们可以传入多个控件,通过arguments[0]可以拿到我们所需的控件,然后就可以.value去赋值 或者 .click等可以去对控件进行操作了