爬蟲使用selenium瀏覽器出現Element is not clickable at point的解決辦法總結

當出現不可點擊的情況,解決方法有如下幾種:
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) #拖動到可見的元素去
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章