我想提交一個來自C#Selenium的登錄表單。但是在提交之後,我無法等待加載新頁面。唯一有效的是Thread.Sleep。我應該怎麼做才能讓它等待?硒提交後不等待,直到網站被加載
[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()'不起作用,你還試過了什麼?隱式/顯式等待將是我尋找解決方案的第一站。 –
Thread.Sleep的作品。但我想有更好的解決方案。 –