>Java >java지도 시간 >Selenium에서 오버레이로 숨겨진 요소를 클릭하는 방법은 무엇입니까?

Selenium에서 오버레이로 숨겨진 요소를 클릭하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-29 14:27:10215검색

How to Click Elements Hidden by Overlays in Selenium?

Selenium에서 오버레이로 숨겨진 요소 클릭

Selenium 기반 자동화에서는 오버레이로 가려진 요소를 클릭하는 것이 일반적인 문제일 수 있습니다. . "MyElement 요소는 (x, y) 지점에서 클릭할 수 없습니다... 다른 요소가 클릭을 받습니다."라는 오류 메시지는 이러한 상황을 나타냅니다.

문제 해결

이 문제를 해결하려면 다음 접근 방식을 고려하세요.

  • JavaScript 또는 AJAX 호출:
    JavaScript 또는 AJAX 호출로 인해 클릭이 실패하는 경우 Actions 클래스를 사용해 보십시오.
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
  • 뷰포트에 없는 요소:
    요소가 뷰포트 내에 표시되지 않으면 JavaScriptExecutor를 사용하여 뷰포트로 가져옵니다. 보기:
JavascriptExecutor jse1 = (JavascriptExecutor)driver;
jse1.executeScript("scroll(250, 0)"); // if the element is on top.
jse1.executeScript("scroll(0, 250)"); // if the element is at bottom.
  • 페이지 새로 고침:
    요소를 클릭할 수 있게 되기 전에 페이지가 새로 고쳐지면 대기를 유도하세요.

    Thread.sleep(500); // replace 500 with an appropriate timeout in milliseconds
  • 클릭할 수 없는 요소 DOM:
    요소가 DOM에 있지만 클릭할 수 없는 경우 elementToBeClickable ExpectedCondition과 함께 ExplicitWait를 사용하세요.
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  • 임시 오버레이:
    요소에 임시 오버레이가 있는 경우 ExplicitWait를 사용하세요. 오버레이가 보이지 않게 되기 위한 invisibilityOfElementLocated ExpectedCondition:
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  • 영구 오버레이:
    요소에 영구 오버레이가 있는 경우 클릭을 다음으로 직접 보냅니다. JavaScriptExecutor를 사용하는 요소:
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);

위 내용은 Selenium에서 오버레이로 숨겨진 요소를 클릭하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.