Selenium因浏览器窗口大小而无法定位页面元素

1. 问题描述

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button type=”button” class=”btn btn-info btn-sm” onclick=”javascript:reimbursementExport();”>…</button> is not clickable at point (905, 289). Other element would receive the click: <th class=”dow”>…</th>

在一个自动下载报表文件的爬虫中,输入报表时间范围后无法定位“导出”按钮,元素位置如下:

由上图可以看出日期选择器控件已经完全将“导出”按钮遮挡,因此初步猜测可能由于按钮被遮挡而导致selenium无法定位Button元素。

2. 检索资料

从简书上看到《Selenium无法定位元素的九种解决方案》一文,在文中第6部分列举了“元素被遮挡,不可用,不可见”四种解决方案,有意详细了解的同学可以点击链接阅读原文。

3. 解决方案

由于该Button元素并无display、active等属性或状态的约束,推测可能为按钮遮挡导致,因此可以通过调整浏览器默认窗口大小来改变日期选择空间与“导出”按钮的相对位置,从而使selenium可以定位Button元素,如图为最大化Chrome浏览器窗口的效果:

4. 代码实现

只需在创建Webdriver对象时对窗口的默认尺寸进行修改,代码如下:

[code]<br />driver.maximize_window()<br />[/code]

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注