如何修复第一次单击后会单击按钮但产生“ ElementClickInterceptedException:”的while循环

时间:2019-07-11 18:09:18

标签: python selenium web-scraping

我正在抓https://www.virginmobile.ca/en/phones/phone-details.html#!/a70/Black/128/MTH。我试图在“选择您的每月电话计划”下获取价格,但是当我选择“提前购买电话”选项时,下面的计划有一个“查看更多计划”按钮,我试图点击该按钮。我设法单击它,但是有时仍然有更多计划出现,如果按钮仍然存在,我的while循环似乎也没有单击它。而是跟踪状态:

元素showitems“ ng-click =” showmoreplans()“ ng-bind-html =” messages ['phonedetail.seemoreplan.label']“ class =” ng-binding ng-scope“> ...不可点击在(620,870)点。其他元素将获得点击:...

output[count[arr[i]]-1] = arr[i];

我最终希望能够在弹出的窗口中多次点击“查看更多计划”选项,然后在所有计划可见且按钮消失后继续抓取。

1 个答案:

答案 0 :(得分:0)

点击之前,您可以使用location_once_scrolled_into_view方法滚动到元素。

如下更改代码。

see_more_plans = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#planList > a')))
# you don't have to scroll to element when you are using the javascript
driver.execute_script("arguments[0].click();",see_more_plans[0])
print('see More Clicked')