爬虫使用selenium浏览器出现Element is not clickable at point的解决办法总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43800002/article/details/96197954

当出现不可点击的情况,解决方法有如下几种:
1.加time.sleep(2)里面的数字可以直接等待渲染或者加载之后,如果对速度要求不高的话一般这种情况可以解决问题啦

2.浏览器的页面并没有完全加载出来,这个时候就需要设置显示等待时间,这里设置为10秒在等待时间内如果某元素达到了判断的条件,那么可以执行下面的操作,如点击等,现设置显示等待时间
wait = WebDriverWait(driver, 10)
wait.until(EC.等待条件((By.节点信息,‘next-checkbox-label’))).click()

**等待条件**                                  含义
title_is                                     标题是某内容
title_contains                               标题包含某内容
presence_of_element_located                  节点加载出来,传入定位元组,如(By.ID,’p’)
visibility_of_element_located                节点可见,传入定位元组
visibility_of                                可见,传入节点对象
presence_of_all_elements_located             所有节点加载出来
text_to_be_present_in_element                某个节点文本包含某个文字
text_to_be_present_in_element_value          某个节点值包含某文字
frame_to_be_available_and_switch_to_it       加载并切换
invisibility_of_element_located              节点不可见
element_to_be_clickable                      节点可点击
staleness_of                            判断一个节点是否仍然在DOM,可判断页面是否已经刷新


节点信息           CLASS_NAME /ID/ XPATH/ CSS_SELECTOR等

3.因为网页有时候使用js渲染的,所以我们点击不到,这时候就需要用到js的方法,

element=wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'next-checkbox-label')))
driver.execute_script("arguments[0].click();", element)

不懂js同学们可以看看这个https://baijiahao.baidu.com/s?id=1620076858472114075&wfr=spider&for=pc

4.还有一种情况可能是没有下拉到浏览器对应的视图中,这种情况就需要把试图往下拉了。

target = driver.find_element_by_id("id_keypair")
driver.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去

猜你喜欢

转载自blog.csdn.net/weixin_43800002/article/details/96197954