我正在抓取一個VUE.js網站,當我在 Selenium 中打開除錯模式時,它可以找到并單擊下拉按鈕,但是當我在正常模式下運行它時,它會拋出以下錯誤訊息:
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <select id="sortselectbox" data-ph-at-id="search-page-sort-drop-down" class="form-control au-target" value.bind="searchParams.sortBy" change.delegate="sortfilterSearch()" tabindex="0" data-ph-id="ph-page-element-page20-4VGGDW" au-target-id="169">...</select> is not clickable at point (707, 444). Other element would receive the click: <div class="chatBotNotificationText" tabindex="0">...</div>
(Session info: headless chrome=96.0.4664.110)
這是我如何找到下拉按鈕
Order = driver.find_element_by_xpath("//*[@id='sortselectbox']")
在此之前,這是我滾動到網站頂部的方法,以便sortselectbox驅動程式可以看到
driver.execute_script("window.scrollTo(0, 220)") #Page up
這是 HTML 元素
<select id="sortselect" data-ph-at-id="search-page-sort-drop-down" class="form-control au-target" value.bind="searchParams.sortBy" change.delegate="sortfilterSearch()" tabindex="0" data-ph-id="ph-page-element-page20-UCZFWs" au-target-id="150"> <option value="Most relevant" key="c-internal-digital-technology-it-53pxnB-ph-search-results-v2-view4-mostRelevantText" data-ph-id="ph-page-element-page20-srcQGN"> Most relevant </option> <option value="Most recent" key="c-internal-digital-technology-it-53pxnB-ph-search-results-v2-view4-mostRecentText" data-ph-id="ph-page-element-page20-Br2Xo6"> Most recent </option> </select>
我嘗試在滾動前后添加更多睡眠,但似乎在那一步失敗了。所有跡象都表明滾動在正常模式下不起作用。我是否必須找到另一種方法來定位該sortselectbox按鈕而不使用window.scrollTo腳本?
謝謝!
uj5u.com熱心網友回復:
這個錯誤資訊...
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <select id="sortselectbox" data-ph-at-id="search-page-sort-drop-down" class="form-control au-target" value.bind="searchParams.sortBy" change.delegate="sortfilterSearch()" tabindex="0" data-ph-id="ph-page-element-page20-4VGGDW" au-target-id="169">...</select> is not clickable at point (707, 444). Other element would receive the click: <div class="chatBotNotificationText" tabindex="0">...</div>
...暗示點擊嘗試 html-選擇元素被chatBotNotification 阻止。
由于所需的專案是Select元素,理想情況下可以選擇一個選項,您需要為element_to_be_clickable()引入WebDriverWait,您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#sortselect[data-ph-at-id='search-page-sort-drop-down']")))).select_by_value("Most relevant")使用XPATH:
Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='sortselect' and @data-ph-at-id='search-page-sort-drop-down']")))).select_by_value("Most recent")
注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/391986.html
標籤:Python 硒 路径 css-选择器 html-选择
