0

私はそのような問題を抱えています:

ページ全体に重なる空のdivが重なる位置 6,83 のリンクがあります。

このリンクは重複しているためクリックできません。しかし!実行しようとするdocument.elementFromPoint(6,83)と、divではなくリンクが返されます:(このdivの重複リンクを検出するにはどうすればよいですか?

Java + WebDriver でこれが必要ですが、JS も解決策になる可能性があります。

ありがとうございました。

UPD: (十分な評価がありません): 解決策が見つかりました! 不思議なことにdocument.elementFromPoint、要素の左上座標を呼び出すと、重なっていても同じ要素を返します。そのため、要素の CENTER でオーバーラップを確認できます。

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 で要素がクリック可能な問題を抱えている人に役立つことを願っています。

4

2 に答える 2

0

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 で要素がクリック可能な問題を抱えている人に役立つことを願っています。

于 2013-12-24T07:53:02.623 に答える