簡體   English   中英

為什么會收到ElementClickInterceptedException錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM