0

すべてのページの表で特定のテキストを検索する必要があります。テキスト (例: "xxx") を検索する必要があり、このテキストが 3 ページ目の表の 5 行目にあるとします。私はいくつかのコードで試しました:

List<WebElement> allrows = table.findElements(By.xpath("//div[@id='table']/table/tbody/tr"));
List<WebElement> allpages = driver.findElements(By.xpath("//div[@id='page-navigation']//a"));
    System.out.println("Total pages :" +allpages.size());
    for(int i=0; i<=(allpages.size()); i++)
        {
            for(int row=1; row<=allrows.size(); row++)
                {
                    System.out.println("Total rows :" +allrows.size()); 
                    String name = driver.findElement(By.xpath("//div[@id='table']/table/tbody/tr["+row+"]/td[1]")).getText();
                    //System.out.println(name);
                    System.out.println("Row loop");
                    if(name.contains("xxxx"))
                        {
                            WebElement editbutton = table.findElement(By.xpath("//div[@id='table']/table/tbody/tr["+row+"]/td[3]"));
                            editbutton.click();
                            break;
                        }
                    else
                    {
                        System.out.println("Element doesn't exist");
                    }
                    allpages = driver.findElements(By.xpath("//div[@id='page-navigation']//a"));
                }

            allpages = driver.findElements(By.xpath("//div[@id='page-navigation']//a"));
            driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
            allpages.get(i).click();
        }

申し訳ありませんが、私はエラーを説明するのを逃しました。このコードは適切に実行され、すべてのページの各行で要素「xxx」をチェックし、見つかったら編集ボタンをクリックします。

その後、「allpages.get(i).click();」に移ります。// コードはページをクリックするためのものです

しかし、ページネーションが見つからないため、「要素はポイント (893, 731) でクリックできません。他の要素はクリックを受け取ります....」というエラーが表示されます。

4

1 に答える 1

0

ページ ループごとに、1 つのテーブル WebElement オブジェクトを使用します。したがって、次のページに移動した後、StaleElementReferenceException が発生すると仮定します。解決策は、すべてのページループでテーブルを定義することであると思います。この行もList<WebElement> allrows = table.findElements(By.xpath("//div[@id='table']/table/tbody/tr"));後に移動しfor(int i=0; i<=(allpages.size()); i++)ます

編集:そして、ところで、この行allpages.get(i).click()では、現在のリンクではなく、次のページのリンクをクリックする必要があると思います

于 2013-09-27T22:51:47.233 に答える