WebDriverException : 요소는 (x, y) 지점에서 클릭 할 수 없습니다.
이것은 java.lang.RuntimeException 을 확장 하는 전형적인 org.openqa.selenium.WebDriverException 입니다 .
이 예외의 필드는 다음과 같습니다.
- BASE_SUPPORT_URL :
protected static final java.lang.String BASE_SUPPORT_URL
- DRIVER_INFO :
public static final java.lang.String DRIVER_INFO
- SESSION_ID :
public static final java.lang.String SESSION_ID
개별 사용 사례에 대해 오류가 모든 것을 알려줍니다.
WebDriverException: Element is not clickable at point (x, y). Other element would receive the click
당신이 정의했다고 코드 블록에서 분명하다 wait
등을 WebDriverWait wait = new WebDriverWait(driver, 10);
하지만 당신은 호출 click()
(가) 전에 요소 방법을 ExplicitWait
같이 놀이로 제공됩니다 until(ExpectedConditions.elementToBeClickable)
.
해결책
오류 Element is not clickable at point (x, y)
는 다른 요인으로 인해 발생할 수 있습니다. 다음 절차 중 하나를 사용하여 문제를 해결할 수 있습니다.
1. JavaScript 또는 AJAX 호출로 인해 요소가 클릭되지 않음
사용하려고 Actions
클래스 :
WebElement element = driver.findElement(By.id("navigationPageButton"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
2. 요소가 뷰포트 내에 없기 때문에 클릭되지 않음
사용해보십시오 JavascriptExecutor
뷰포트 내에서 요소를 가져 오는 .
WebElement myelement = driver.findElement(By.id("navigationPageButton"));
JavascriptExecutor jse2 = (JavascriptExecutor)driver;
jse2.executeScript("arguments[0].scrollIntoView()", myelement);
3. 요소를 클릭 할 수있게되기 전에 페이지가 새로 고쳐집니다.
이 경우 유도 ExplicitWait 즉, 4 번 항목에서 언급 한대로 WebDriverWait 를 합니다.
4. 요소가 DOM에 있지만 클릭 할 수 없습니다.
이 경우 요소를 클릭 할 수 있도록 설정하여 ExplicitWait 를 유도합니다 .ExpectedConditions
elementToBeClickable
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("navigationPageButton")));
5. 요소가 있지만 임시 오버레이가 있습니다.
이 경우에 유도 ExplicitWait
로 ExpectedConditions
로 설정 invisibilityOfElementLocated
오버레이 보이지 않도록 할.
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
6. 요소가 있지만 영구적 인 오버레이가 있습니다.
JavascriptExecutor
요소를 직접 클릭하는 데 사용 합니다.
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);