C#からSeleniumでログインフォームを送信しようとしています。しかし、新しいページが読み込まれるのを待つために、送信後に待機させることはできません。働いているのはThread.Sleepだけです。それを待たせるために私は何をすべきですか?ウェブサイトがロードされるまで、Seleniumはサブミッションを待っていません
[TestFixture]
public class SeleniumTests
{
private IWebDriver _driver;
[SetUp]
public void SetUpWebDriver()
{
_driver = new FirefoxDriver();
// These doesn't work
//_driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(10));
//_driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
}
[Test]
public void SubmitTest()
{
_driver.Url = "http://mypage.com";
_driver.FindElement(By.Name("username")).SendKeys("myname");
_driver.FindElement(By.Name("password")).SendKeys("myeasypassword");
_driver.FindElement(By.TagName("form")).Submit();
// It should wait here until new page is loaded but it doesn't
// So far this is only way it has waited and then test passes
//Thread.Sleep(5000);
var body = _driver.FindElement(By.TagName("body"));
StringAssert.StartsWith("Text in new page", body.Text);
}
}
それは 'geckodriver'の既知の問題です。 https://github.com/mozilla/geckodriver/issues/308 –
'Thread.Sleep()'がうまくいきませんでしたか? Implicit/Explicitの待ち時間は、解決策を探す上で私の最初のストップとなるでしょう。 –
Thread.Sleepが機能します。しかし、私はこれに対するより良い解決策を持ちたいと思っています。 –