0

WebElement 内から複数の WebElements を抽出する方法はありますか? たとえば、次のものがあります。

        String filterRowXpath = "(//div[@id=\"tabItemFilters\"]//div[@id=\"RowExpGridWidgetGridPanel\"]//div[@class=\"x-grid3-body\"]//tbody)";
    List<WebElement> filterRows = driver.findElements(By.xpath(filterRowXpath));

私は 5 つの要素自体を含む WebElement になってしまいます。たとえば、要素 2 と 3 を参照する方法はありますか?

4

2 に答える 2

0

これが私が思いついたものです:

    String ipFromValueXpath; 
    String ipToValueXpath;

    for(int i=1; i<=filterRows.size(); ++i) {
        ipFromValueXpath = "(((//div[@id=\"tabItemFilters\"]//div[@id=\"RowExpGridWidgetGridPanel\"]//div[@class=\"x-grid3-body\"]//tbody)[" + i + "])//td)[2]";
        ipToValueXpath = "(((//div[@id=\"tabItemFilters\"]//div[@id=\"RowExpGridWidgetGridPanel\"]//div[@class=\"x-grid3-body\"]//tbody)[" + i + "])//td)[3]";

        WebElement e1 = driver.findElement(By.xpath(ipFromValueXpath));
        String ipFromValue = e1.getText();

        WebElement e2 = driver.findElement(By.xpath(ipToValueXpath));
        String ipToValue = e2.getText();

        if(ipFromValue.equals(ipFrom) && ipToValue.equals(ipTo)) {
            e1.click();
            element = driver.findElement(By.xpath(deleteFilterButtonXpath));
            element.click();
            Thread.sleep(500);
            AdminFunctions.apply();
            return;
        }

    }

各要素の Xpath を取得し、各行を反復して一致を見つける必要がありました。私はそれが最も効率的な方法だとは思いません。

于 2013-01-25T19:14:22.513 に答える
0

次のようなものがある場合:

<tbody>
<webelement>1<webelement/>
<webelement>2<webelement/>
<webelement>3<webelement/>
</tbody>

[position()=2]2 または 3 が必要な場合は、またはと同等の [2] または [3] を追加できます[position()=3]

したがって、XPath//tbody[position()=2 or position()=3]の場合、これらの位置のいずれかを探している場合は .. になります。複数の位置を検索する場合は、前のステートメントのように短縮形を使用できないことに注意してください。

アップデート:

filterRowXpath= "(((//div[@id=\"tabItemFilters\"]//div[@id=\"RowExpGridWidgetGridPanel\"]//div[@class=\"x-grid3-body\"]//tbody)[" + i + "])//td)[position()=2 or position()=3]

これにより、ノードごとに個別の xpath を実行する代わりに、2 つのノードの結果が返されます。

List<WebElement> filterRows = driver.findElements(By.xpath(filterRowXpath));

次に、条件を WebElements に適用します。元の質問に投稿されたスニペットにはほとんどありませんでした。

于 2013-01-25T18:09:29.133 に答える