2013-04-16 3 views
0

를 사용하여 위치에서 여러 요소를 감지합니다.내가 그런 문제가 자바 스크립트

이 링크는 겹쳐서 클릭 할 수 없습니다. 그러나! 나는 내 사업부를하지 날을 반환하지만 링크 :(어떻게이 겹치는 링크를 div에 감지 할 수 document.elementFromPoint(6,83)을 실행하기 위해 노력하고있어 때?

또한 해결책이 될 수있는 Java + WebDriver하지만 JS이 필요합니다.

! (I 충분하지 등급이) :.

UPD를 주셔서 감사합니다. 그것은 이상한 내가 해결책을 발견 하지만, 요소의 왼쪽 상단의 좌표를 요구 document.elementFromPoint 경우 그것이 중복도 같은 요소를 반환합니다 때문이다 요소의 가운데에서 겹치는 부분을 확인할 수있는 이유는 무엇입니까?

나는이 같은 문제 또는 요소 WebDriver에서 클릭 문제와 사람을 도움이되기를 바랍니다

public static boolean isElementClickable(WebElement element) { return element.isDisplayed() && element.isEnabled() && element.equals(getJSExecutor(getDriverFromContext(element)) .executeScript("return document.elementFromPoint" + "(" + Integer.toString(((Locatable)element).getLocationOnScreenOnceScrolledIntoView().getX() + (element.getSize().getWidth()/2)) + ", " + Integer.toString(((Locatable)element).getLocationOnScreenOnceScrolledIntoView().getY() + (element.getSize().getHeight()/2)) + ")")); }

: 나는 WebDriver에 대해 물었을 때, 여기에 솔루션입니다.

답변

0

, 여기에 솔루션입니다.

0

elementFromPoint 또는 getBoundingClientRect 메서드를 사용할 수 있습니다.
자세한 방법은이 방법 링크를 참조하십시오.

elementFromPoint :이 메서드는 드래그 앤 드롭 스크립트 용으로 제공됩니다. 사용자가 드래그 된 요소를 떨어 뜨리면 드롭 포인트에있는 요소를 찾아 내서 그 요소로 이동하십시오. 더 복잡한 계산이 필요하지 않습니다.

getBoundingClientRect : 이것은 요소의 위쪽, 오른쪽, 아래쪽 및 왼쪽 오프셋 좌표를 제공하는 Internet Explorer 5 (Firefox 3에 포함됨)에서 처음 소개 된 방법입니다. PPK가 최근에이 방법을 언급 한 후, 그 유용성을 보여주기 위해 시간이 좀 걸릴 것이라고 생각했습니다. 이 방법을 특히 편리하게 만드는 이유는 요소의 오프셋 위치를 계산하는 대체 수단이 매우 희박하고 버그가있어서 우스꽝스럽게 연결된다는 것입니다. 나는이 같은 문제 또는 요소 WebDriver에서 클릭 문제와 사람을 도움이되기를 바랍니다

public static boolean isElementClickable(WebElement element) { 
    return element.isDisplayed() && element.isEnabled() && 
    element.equals(getJSExecutor(getDriverFromContext(element)) .executeScript(
     "return document.elementFromPoint" + "(" + 
     Integer.toString(((Locatable)element).getLocationOnScreenOnceScrolledIntoView().getX() + 
     (element.getSize().getWidth()/2)) + ", " + 
     Integer.toString(((Locatable)element).getLocationOnScreenOnceScrolledIntoView().getY() + 
     (element.getSize().getHeight()/2)) + ")")); 
} 

: 나는 WebDriver에 대한 질문으로

+0

크고 느린 솔루션 인 것 같습니다. 나는 내 페이지에 대해 몇 가지 실험을했으며 링크와 관련된 행동 만 보여줍니다. 예를 들어 같은 div가 겹쳐진 좌표 250/170의 텍스트 필드를 입력하고'document.elementFromPoint (250,170)'이이 입력을 정확하게 반환합니다. 오히려 이상한 행동입니다. 내 div의 Z- 색인은 199, 링크 3, 입력 또한 3입니다. – sickfar

관련 문제