0

要素が現れるのを待っている間にコマンドを実行することはできますか? 特に、要素が表示されるのを待っていますが、ページを更新しない限り表示されません。これが私のコードです

wait = new WebDriverWait(driver, 30);
element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_here")));
state = element.getText();

私が待っている要素は、アプリの更新ボタンを押さない限り表示されません。設定した 30 秒のタイムアウト中に更新するにはどうすればよいですか?

4

2 に答える 2

1

次のようなことができます。

    System.out.println("before wait");
    WebElement el = (new WebDriverWait(driver, 30))
      .until(new ExpectedCondition<WebElement>(){
        //try the following cycle for 30 seconds
        @Override
        public WebElement apply(WebDriver driver) {
            //refresh the page
            driver.navigate().refresh();

            System.out.println("Refreshed");
            //look for element for 5 seconds
            WebElement sameElement = null;
            try{
                sameElement = (new WebDriverWait(driver, 5))
                      .until(new ExpectedCondition<WebElement>(){
                    @Override
                    public WebElement apply(WebDriver driver) {
                        System.out.println("Looking for the element");
                        return driver.findElement(By.id("theElementYouAreLookingFor"));
                    }});    
            } catch (TimeoutException e){
                // if NULL is returns the cycle starts again
                return sameElement;
            } 
            return sameElement;
    }});        
    System.out.println("Done");

要素の取得を 30 秒間試行し、5 秒ごとにページを更新します。

于 2013-01-09T17:54:44.623 に答える
0

そのコードにさらに行を追加します。基本的に、state.isEmpty() の場合、Webdriver の「Action」クラスを使用してマウスを更新ボタンに移動します (これを機能させるには、アプリ内に更新ボタンが必要です)。もう一度待機を実行して、表示されることを確認します。

于 2013-01-09T01:16:11.500 に答える