2017-11-17 12 views
-1

アプリケーションでは、多くのフィールドがあり、すべてのフィールドにフィルタ(テキストボックス)があります。そのため、一度ユーザーがフィルターのいずれかの値を入力すると、すぐにUIデータ(UI表)がリフレッシュされ始めます。セレンのUIデータフィルタを待つ

データがUIにロードされるのを待ってから別のフィルタを適用したいと思っていました。

データは、私は今のところお勧めすることができ、すべてがFluentWaitで、あなたが提供するさらなる詳細がなくて

+0

参照してください:[私はXをどのように行うのですか?](https://meta.stackoverflow.com/questions/253069/whats-the-the-new-current-close-for-do-do-do-do-x)SOに関する期待は、質問をしているユーザーが自分の質問に答えるだけでなく、その研究、コードの試行、および結果。これは、時間をかけて自分自身を助けようとしていることを示しています。明白な回答を繰り返さないようにしてくれています。そして、より具体的で適切な答えを得ることができます。参考:[ask] – JeffC

答えて

0

をのThread.sleep使用せずにロードされるまで待つする方法はあります。たとえば、次のように

final WebDriver driver = ...  
new FluentWait<>(driver).withTimeout(30, SECONDS) 
    .pollingEvery(1, SECONDS) 
    .ignoring(NoSuchElementException.class) 
    .until(
     webDvr -> !webDvr.findElements(By.xpath("//tr")).isEmpty() 
    ); 
+0

返信ありがとうございました....私は多くのフィルタを持っていて、デフォルトではすべてのデータが表示されているようなシナリオを持っています。今は、フィルタを1つずつ適用したい2番目の(次の)フィルタは、最初の(前の)フィルタのデータフィルタを取得するのを待つ必要がありました。また、デフォルトでは、一部のデータには "// tr"が存在します。私はセレンの世界に新しいので、これを解決するために私を助けてください。 –

0

私はコードの下に使用して、これを実行することができた -

public boolean isElementDisplayed(WebElement element) { 
     try {    
       WebDriverWait wait = new WebDriverWait(driver, 5); 
       wait.until(ExpectedConditions.visibilityOf(element)); 
       return element.isDisplayed(); 
      } catch (Exception e) { 
       return false; 
      } 
} 


public void loadingTimer(){ 

    WebElement element = driver.findElement(By.xpath("//span[contains(text(),'Loading...')]")); 

    if (isElementDisplayed(element)) { 
    WebDriverWait wait = new WebDriverWait(driver , 5); 
    wait.until(ExpectedConditions.not(ExpectedConditions.visibilityOf(element))); 
    } 

} 
関連する問題