0

ページ上のいくつかの要素を表すSeleniumElementがあり、":visible"要素のみを含むようにフィルタリングしたいと思います。

元のコンストラクターを改良して1つの要素のみを含めることができるかもしれませんが、別のことを実行できるかどうかを尋ねています。特定の要素を指定して、この要素のセレクターでフィルター処理する新しい要素を作成します。

このようなもの:

public static SeleniumElement visible(SeleniumElement element) {
    // Locator.filter() doesn't really exist, the next line won't compile
    By locator = element.getElementLocator().filter(":visible"); 
    return new SeleniumElement(element.getName(), locator, element.getPage());
}

visible(myButton).click();

// Calling myButton.click() fails because there are multiple elements that match
// the selector. However, only one of them is visible right now
4

2 に答える 2

1

可視性によって要素をフィルタリングする場合は、CSS セレクターを使用するのが適切です。

css プロパティの Display と Visibility の両方を追加しました。したがって、ターゲット要素を見つけることができる任意の 1 つのプロパティ/属性を使用できます。(C#コード)

IWebElement Query = driver.FindElement(By.XPath("Element Xpath")).FindElement(By.CssSelector("[@style='display: block;Visibility: hidden']"));

これが役立つことを願っています。ではごきげんよう :-)

于 2012-12-06T11:26:41.230 に答える
0

または、要素が表示されているかどうかに基づいてクリックを実行できます。

    if (element.Visible)
    {
        element.click();
    }
于 2012-12-06T17:59:38.340 に答える