我正在嘗試單擊復選框。下面是 HTML 代碼
<div class="mb-1 p-3 termsCheck">
<input class="form-check-input float-end" type="checkbox" value="" id="flexCheckDefault" required=""> <label class="form-check-label float-end" for="flexCheckDefault"><span>
Agree to Terms & Conditions </span> / <span> ????? ??? ?????? ????????
</span> </label>
</div>
我正在使用以下代碼單擊它。
check = driver.find_element(By.CSS_SELECTOR, '#flexCheckDefault')
check.click()
我收到此錯誤
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (477, 1222)
完整錯誤:
driver.find_element(By.XPATH, "//label[@for='flexCheckDefault']").click()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 81, in click
self._execute(Command.CLICK_ELEMENT)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 710, in _execute
return self._parent.execute(command, params)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 424, in execute
self.error_handler.check_response(response)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (292, 1317)
(Session info: chrome=91.0.4472.101)
Stacktrace:
#0 0x556910005919 <unknown
可以請一些人幫我解決這個問題。
當我使用以下代碼時,我收到此錯誤::
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='flexCheckDefault']"))).click()
錯誤
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='flexCheckDefault']"))).click()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 81, in click
self._execute(Command.CLICK_ELEMENT)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py", line 710, in _execute
return self._parent.execute(command, params)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 424, in execute
self.error_handler.check_response(response)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (292, 467)
(Session info: chrome=91.0.4472.101)
Stacktrace:
#0 0x563f45805919 <unknown>
uj5u.com熱心網友回復:
ElementClickInterceptedException通常在元素不在視口中時出現。在這種情況下,JavaScript 執行器在 selenium 腳本中完美運行。下面的代碼應該作業:
driver.execute_script("arguments[0].click();", element)
uj5u.com熱心網友回復:
要單擊 ()標簽旁邊的復選框同意條款和條件,您可以使用以下任一定位器策略:
使用css 選擇器:
driver.find_element(By.CSS_SELECTOR, "label[for='flexCheckDefault']").click()使用xpath:
driver.find_element(By.XPATH, "//label[@for='flexCheckDefault']").click()
理想情況下,要單擊可點擊元素,您需要為element_to_be_clickable()引入WebDriverWait,您可以使用以下任一定位器策略:
使用CSS-SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label[for='flexCheckDefault']"))).click()使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='flexCheckDefault']"))).click()注意:您必須添加以下匯入:
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/houduan/370858.html
