私はクリックを送信する必要があるページに単純なサブミットボタンがありますが、このボタンはページの下部にあり、ユーザーがブラウザのスクロールバーを使用しないと表示されません!クリックを非表示にするにはどうすればいいですか?
このC#コードを使用すると、エラー要素が表示されないので、この問題をどのように解決できますか?
driver.FindElement(By.Id("submit")).Click();
私はクリックを送信する必要があるページに単純なサブミットボタンがありますが、このボタンはページの下部にあり、ユーザーがブラウザのスクロールバーを使用しないと表示されません!クリックを非表示にするにはどうすればいいですか?
このC#コードを使用すると、エラー要素が表示されないので、この問題をどのように解決できますか?
driver.FindElement(By.Id("submit")).Click();
id = "submit"のページに2つの要素があります。私は名前を使用し、今は正常に動作し、すべてに感謝します。
あなたから見えない場合は、セレンドライバで使用されているブラウザによってレンダリングされません。
スクロールをシミュレートしてアイテムが確実に表示されるようにするか、より大きい解像度でシミュレーションを行うことをお勧めします。
最終的にはヘッドレスドライバに切り替えることを検討することができます...
JavaScriptを使用してスクロールダウンできます。このようなことが仕事をするはずです。
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
Selenium Webdriverは、表示されている場合、要素に暗黙的にスクロールします。要素の可視性を待ってから、クリック操作を実行できます。 Javaでは、私たちは次のコードを使用して、視認性を待つことができます:必要な要素を可視になるのを
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(driver.findElement(By.id("submit"))));
を上記のコードでは、webdriverをは、60秒間待機します。 60秒以内に要素が表示されない場合、タイムアウトエラーで失敗します。必要な要素が表示されたら、それをクリックすることができます。
ところで、これはバグであり、開発者向けに記述する必要があります。 DOMは重複IDを持つべきではありません。 – jibbs