1

ページ上のボタンが存在する場合は、そのボタンをクリックする Java Web ドライバーが必要です。要素の出現回数は固定されていませんが、20 を超えません。

私は使ってみました:

 for(i=0; i<=20; i++){
            try{
                driver.findElement(By.cssSelector(".btn.btn-small.btn-list")).isDisplayed();
                present = true;
            } catch(Exception g) {
                present = false;
            }
        if(present) {
            driver.findElement(By.cssSelector(".btn.btn-small.btn-list")).click();
            WaitForPageToLoad(5);
        } else {
            System.out.println(i);
            break;
            }
        }

ただし、これは要素を1回クリックするだけで機能し、すべての出現に対して機能しません。助けてください。

4

2 に答える 2

1

ここで、次のようにしてみてください。

boolean present = false;
List<WebElement> els= d.findElements( By.cssSelector(".btn.btn-small.btn-list"));
d.manage().timeouts().implicitlyWait( 10, TimeUnit.SECONDS );
for ( WebElement we : els ) {
    try{
        if ( we.isDisplayed() ) {
            we.click();
            present = true;
        } else {
            System.out.println("Invisible.");
        }
    } catch( StaleElementReferenceException|NoSuchElementException g) {
        System.out.println("WARNING: " + g.getMessage() );
    }
}
if ( present ) {
    System.out.println("Found bookoo!");
} else {
    System.out.println("Found nada!");
}
于 2013-03-26T02:37:40.500 に答える
0

これは、暗黙的な待機を使用せず、クロスブラウザーおよびクロスプラットフォームのテスト時に移植性と保守性が高い明示的な別のアプローチです。WebDriverWait が明示的にこれを実行するため、要素が表示/表示されているかどうかを確認する必要はありません。

さまざまな種類の待機の詳細については、以下を参照してください。

   String CSS_SELECTOR = ".btn.btn-small.btn-list";

   webDriverWait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(CSS_SELECTOR)))

   List<WebElement> elements = driver.findElements(By.cssSelector(CSS_SELECTOR));

   for ( WebElement element : elements ) {

        element.click();

   }
于 2013-03-26T14:25:31.207 に答える