0

自動化に Selenium 2/WebDriver を使用しています。テーブルがあり、その中の行を選択しようとしています。テストを実行すると、行がクリックされたかのように強調表示されますが、すぐに次のようになります。

「org.openqa.selenium.StaleElementReferenceException: 要素が DOM に関連付けられていません」

エラーが発生し、テストは失敗します。

コードは次のとおりです。

@Test
public void rowSelection() throws Exception
{
    SeleniumHelper helper = new SeleniumHelper();
    action = new SeleniumActionHelper(driver);

    helper.login();

    String testUrl = navigateToUrl("option/listOptions.xhtml");
    driver.get(testUrl);

    WebElement table = findElementById("tableSection:dataTableWrapped_data");
    List<WebElement> allRows = table.findElements(By.tagName("tr"));
    for (WebElement row : allRows)
        {
            List<WebElement> cells = row.findElements(By.tagName("td"));
            for (WebElement cell : cells)
            {
                WebElement listName = cell.findElement(By.xpath("./*[text()='body_build']"));
                listName.click();
            }
        }
}

listName.click() アクションの前後に Thread.sleep(2000) を配置しましたが、どちらも役に立ちませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

0

これが同期の問題であると思われる場合は、次を使用できますwait.until

WebElement webElement = wait.until(ExpectedConditions.visibilityOf(listName));

webElement.click();

ブレークポイントを設定し、クリック操作を行ったときにロケーターが変更されているかどうかをアプリケーションでチェックインします。もしそうなら、より良いロケーターを検討する必要があります。

于 2016-08-30T14:31:14.957 に答える