C#WebDriver:页面刷新后驱动程序没有更新

时间:2017-10-27 11:20:02

标签: c# selenium webdriver

我有一个场景,我需要加载一个页面,如果它上面没有东西,请重新加载页面直到它为止。该页面还包含ajax内容(IFrame),其中包含我正在寻找的内容。

第一页加载,我能够找到IFrame并检测我正在寻找的内容不存在。

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(drv => drv.FindElement(By.Name(frameName)));
driver.SwitchTo().Frame(frameName);
var content = driver.FindElement(By.Id("myContent"));
然后我打电话给:

driver.Navigate().Refresh(); 
driver.SwitchTo().DefaultContent();

重新加载页面,然后再次调用以下内容:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
return wait.Until(drv => drv.FindElement(By.Name(frameName)));

然而,驱动程序的PageSource包含页面的pre-ajax内容,尽管我可以看到该页面已添加了内容。 FindElement调用将继续抛出,直到发生30秒超时。

有人能说出这里的错误吗?

1 个答案:

答案 0 :(得分:0)

我认为,您想重新加载父窗口以检查iframe是否存在。

driver.Navigate()刷新();

driver.SwitchTo()DefaultContent();

使用上面的代码,您的控件仍然在iframe和您的重新加载页面上,然后您切换回父窗口。

您应首先切换到父窗口,他们应该尝试重新加载页面。 。driver.SwitchTo()DefaultContent(); //切换到父窗口

driver.Navigate()刷新();