私はthisのWebサイトを自動化していますが、ExplicitWait
の問題を抱えています。DOMから要素が削除された場合、ExplicitWaitを削除します
シナリオはユーザー名を送信した後にログインリンクまたは送信ボタンをクリックすると、プロセス中にローダーが表示され、プロセスが完了するとローダーはDOMから削除されます。
私は
new WebDriverWait(driver, 60).until(ExpectedConditions.invisibilityOfElementLocated(By.id("loading-bar")));
以下のようにinvisibilityOfElementLocated
のための条件を使用していた。しかし、これは正しい時間、それはより多くの時間を割いては(ないexectly 60秒が、周り15~20または30秒のかもしれません。)その後、許可を予測することはできません次のコマンドを実行する。
私は4つのコマンドの前に、ログインプロセスを完了するために必要な行を入れなければなりません。だからログインをするのに約90秒かかったようだ。
を使用しないか、Impliciwait
を削除しないと、ローダーが他の要素の代わりにクリックを得るたびにスクリプトが失敗します。
私がこれまで試したコード:
WebDriver driver = new FirefoxDriver();
System.out.println("Browser Opened");
driver.manage().window().maximize();
driver.get("https://www.rcontacts.in");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
System.out.println("URL Opened");
new WebDriverWait(driver, 60).until(ExpectedConditions.invisibilityOfElementLocated(By.id("loading-bar")));
driver.findElement(By.cssSelector(".ng-scope>a span[translate='login.register']")).click();
System.out.println("Register Link Clicked");
driver.findElement(By.name("userId")).sendKeys("9422307801");
new WebDriverWait(driver, 60).until(ExpectedConditions.invisibilityOfElementLocated(By.id("loading-bar")));
driver.findElement(By.xpath("//button[@type='submit']")).click();
System.out.println("Mobile number entered");
new WebDriverWait(driver, 60).until(ExpectedConditions.invisibilityOfElementLocated(By.id("loading-bar")));
はすぐローダが削除されますと、それはアクションを実行開始する任意の解決策はありますか?
ORは、ローダー要素がDOMから削除されるまで待つことができます。一度削除すると、私はさらなるアクションを続けることができますか?
)(=新しいFluentWait(ドライバ).withTimeout(60秒).pollingEvery(5秒) '少ないポーリング時間を待って、それが助けかどうかを確認し、' driver.manageを変更待っ '試してみてください。タイムアウトを"012"、 "TimeUnit.SECONDS"、 " –
"それは消費されたようです "またはそれは実際に消費しただけです。既に起こったイベントを待っていますか?そのローディングバーが実際に画面上にどれだけ長く留まるかについては何も言わなかった。私が知っているすべてのために、あなたはすでに良い解決策を持っています。 –
@ TarunLalwaniのデフォルトのポーリング時間は500ミリ秒で、ほとんどのアプリケーションですでに十分です。それを変更する際に、特に高い数値に変更する必要はありません。 –