[英]Why am I receiving an ElementClickInterceptedException error?
調查中的問題是:您一周中的哪幾天一直有空? 我想檢查星期天。
我正在復制從在線視頻中看到的代碼,但是,我收到此錯誤。 有人建議彈出窗口可能會阻止程序正常運行,但我看不到彈出窗口。
我嘗試使用chromedriver和geckodriver。 兩個都存在錯誤。
查看是否已選擇星期日的代碼可以正常工作:
status=driver.find_element_by_id("RESULT_CheckBox-8_0").is_selected()
print(status)
輸出:
False
這是我的代碼:
from selenium import webdriver
driver=webdriver.Chrome(executable_path="my_webdriver_path"\\chromedriver.exe
driver.get("https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407")
您一周中的哪幾天一直有空?
我現在要檢查“星期日”框。 這是我的代碼:
status=driver.find_element_by_id("RESULT_CheckBox-8_0").click()
print(status)
我希望選中“星期日”框,但收到此錯誤:
selenium.common.exceptions.ElementClickInterceptedException: Message: Element <input id="RESULT_CheckBox-8_0" class="multiple_choice" name="RESULT_CheckBox-8" type="checkbox"> is not clickable at point (313,599) because another element <label> obscures it
我看不到另一個使程序模糊的元素。 有沒有人有什么建議? 我是編碼的新手,所以將不勝感激。
您遇到的問題與標簽和輸入標簽中不同屬性所使用的相同值有關。
如您所見,即使您使用的是'find_element_by_id',標簽的'for'屬性的值也與'id'屬性的值相同(不一定總是唯一的值)。
要解決此問題,您可以使用其他定位器(例如XPATH)。 您可以通過右鍵單擊元素(使用f12檢查代碼時)來獲得xpath,然后選擇[copy]-[xpath]
這是一些應該起作用的代碼(注意:我將chromedriver.exe放置在與其自身的.py文件相同的位置):
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407')
status = driver.find_element_by_id("RESULT_CheckBox-8_0").is_selected()
if status:
pass
else:
driver.find_element_by_xpath("//*[@id='q15']/table/tbody/tr/td[1]/label").click()
不要忘記最終關閉驅動程序,否則它將在運行過程中停留在后台。
您可以這樣做:
driver.close()
希望這可以幫助!
嘗試使用ActionChains
單擊元素。
element = driver.find_element_by_id("RESULT_CheckBox-8_0")
ActionChains(driver).move_to_element(element).click(element).perform()
status = driver.find_element_by_id("RESULT_CheckBox-8_0").is_selected()
print(status)
導入后:
from selenium.webdriver import ActionChains
要在文本為星期日的復選框上click()
,可以使用以下定位策略 :
使用XPATH
:
driver.get("https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[starts-with(@for, 'RESULT_CheckBox-') and contains(., 'Sunday')]"))).click()
注意 :您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
瀏覽器快照:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.