Python element ClickInterceptedException:消息:element ClickIntercepted使用Selenium WebDriver
我试图在运行自动测试时单击某个字段,但出现以下错误:Python element ClickInterceptedException:消息:element ClickIntercepted使用Selenium WebDriver,python,selenium-webdriver,xpath,css-selectors,webdriverwait,Python,Selenium Webdriver,Xpath,Css Selectors,Webdriverwait,我试图在运行自动测试时单击某个字段,但出现以下错误: raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <input id="artistNominee010" type="checkbox"
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <input id="artistNominee010" type="checkbox" class="rock-artist-checkbox"> is not clickable at point (967, 601). Other element would receive the click: <span class="rock-artist-toggle-icon"></span>
这是页面的DOM结构:
无名氏
选择无名氏
从网站上看,这是一个可以点击的元素,但我不能直接选择它,因为其他元素包含相同的类名和不同的被提名者,id是唯一的
选择John Doe
是否还有其他方法可以这样做:
select_-namegate=WebDriverWait(driver,2)。直到(EC.presence_-of_-element位于((By.ID,'artistnamegate010')。类('rock-accessible-text')。单击()
等待元素可单击,而不是显示
select_nominee = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.ID, 'artistNominee010'))).click()
因为元素可以出现在DOM中,但还不能单击(如果被另一个元素阻挡,这可能是您的情况)。要单击该元素而不是您需要对进行归纳,您可以使用以下任一方法:
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label[for='artistNominee010']"))).click()
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='artistNominee010']"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
选择被提名者=WebDriverWait(驱动者,10)。直到(存在被定位的元素((By.ID,'ArtistNamed010'))为止。发送密钥(key.key.SPACE)
参考访问
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC