Chrome에서만 볼 수 있습니다.
전체 오류 메시지는 다음과 같습니다.
“org.openqa.selenium.WebDriverException : 지점 (411, 675)에서 요소를 클릭 할 수 없습니다. 다른 요소는 클릭을받습니다 : …”
‘클릭을받을 수있는’요소는 해당 요소의 윗면이 아니라 겹치지 않고 페이지 주위를 이동하지 않는 요소의 측면입니다.
오프셋을 추가하려고 시도했지만 작동하지 않습니다. 항목은 스크롤 할 필요없이 표시된 창에 있습니다.
답변
다음 세 가지 유형이 있습니다.
1. 요소가 클릭되어 보이지 않습니다.
클릭하도록 Actions 또는 JavascriptExecutor 를 사용 하십시오.
행동 별 :
WebElement element = driver.findElement(By("element_path"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().perform();
JavascriptExecutor로 :
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(250, 0)"); // if the element is on top.
jse.executeScript("scroll(0, 250)"); // if the element is on bottom.
또는
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].scrollIntoView()", Webelement);
그런 다음 요소를 클릭하십시오.
2. 요소를 클릭하기 전에 페이지가 새로 고쳐집니다.
이를 위해 페이지를 몇 초 동안 기다리십시오.
3. 요소를 클릭 할 수 있지만 그 위에 회 전자 / 오버레이가 있습니다.
아래 코드는 오버레이가 사라질 때까지 기다립니다.
By loadingImage = By.id("loading image ID");
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));
그런 다음 요소를 클릭하십시오.
답변
JavaScript 클릭을 사용할 수도 있으며 스크롤이 필요하지 않습니다.
IJavaScriptExecutor ex = (IJavaScriptExecutor)Driver;
ex.ExecuteScript("arguments[0].click();", elementToClick);
답변
chromedriver에 버그가있는 것 같습니다 (문제는 수정되지 않은 것으로 표시되어 있음)-> GitHub Link
( 아마도 FreedomSponsors에 현상금을 배치 하시겠습니까?)
의견 # 27에서 제안 된 해결 방법이 있습니다. 어쩌면 그것은 당신을 위해 일할 것입니다-
답변
나는 같은 문제가 있었고, 제공된 모든 솔루션을 시도했지만 그들은 나를 위해 작동하지 않았다. 결국 나는 이것을 사용했다 :
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("var evt = document.createEvent('MouseEvents');" + "evt.initMouseEvent('click',true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0,null);" + "arguments[0].dispatchEvent(evt);", findElement(element));
도움이 되었기를 바랍니다
답변
셀레늄 구동 크롬 창이 너무 작게 열린 상황에서 이것을 보았습니다. 클릭 할 요소가 뷰포트에서 벗어 났으므로 실패했습니다.
그것은 논리적으로 들립니다 … 실제 사용자는 요소를보고 실제로 클릭 할 수 있도록 창 크기를 조정하거나 스크롤해야합니다.
창 크기를 적절하게 설정하도록 셀레늄 드라이버에 지시 한 후이 문제는 사라졌습니다. 웹 드라이버 API는 여기 에 설명되어 있습니다 .
답변
와우, 여기에 많은 답변과 많은 좋은 답변이 있습니다.
나는 내 경험에서 이것에 무언가를 추가하기를 바랍니다.
글쎄, 내 경우에는 때때로 요소를 숨기는 쿠키 오버레이가있었습니다. 요소로 스크롤해도 작동합니다. 그러나 내 겸손한 의견 (제 경우에는 모든 사람을위한 만병 통치약이 아님)에서 가장 간단한 해결책은 전체 화면으로 이동하는 것입니다 (화면 창의 3/4에서 스크립트를 실행 중이었습니다)! 그래서 우리는 간다 :
driver.manage().window().maximize();
희망이 도움이됩니다!
답변
루비 / watir-webdriver / chrome
다음 트릭을 사용하고 작동하는 것 같습니다.
#scroll to myelement
@browser.execute_script "window.scrollTo(#{myelement.element.wd.location[0]},#{myelement.element.wd.location[1]})"
# click myelement
myelement.when_present.fire_event("click")