我正在寻找一种方法来检查页面是否已使用Selenium加载。所以基本上url指向正确的地址(在chrome中,浏览器显示如下内容):
我使用以下代码:
var driver = new FirefoxDriver();
driver.Url = "SomeUrl";
目前我正在将标题与“SomeUrl不可用”进行比较,如果匹配,则表示该页面无法加载。
但是有更好的方法吗?
答案 0 :(得分:1)
如果您知道控件ID /或链接或/ Class将出现在您的页面上,我建议您这样做。然后等待该元素在屏幕上显示一段规定的时间。
我出现了该元素,然后您的下一行代码将被执行
这是m方法的简单版本。您可以根据需要使其更具动态性。
/// <summary>
/// WaitForElementOnPage() method waits a passed number of seconds for the existence
/// of a passed IWebElement object. If the object is found the method return an IWebElement of the object
/// If the object is not found in the passed number of seconds, the method returns a null IWebElement
/// </summary>
public IWebElement WaitForElementOnPage(string controlID, int waitTime)
{
IWebElement element = null;
IWebElement elementFound = null;
try
{
WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(waitTime));
Thread.Sleep(3000);
elementFound = wait.Until<IWebElement>((d) =>
{
element = d.FindElement(By.Id(controlID));
break;
return element;
});
}
catch (Exception ex)
{
Log.Error(ex);
elementFound = null;
}
return elementFound ;
}
答案 1 :(得分:0)
我个人尝试在页面上找到body
或frameset
元素。
根据我使用chlenium和chromedriver的经验,页面内容有时不显示,我需要运行webdriver.refresh()
1-2次。它不会一直发生,但我在一台机器上运行了大量的chrome实例,这种方法现在是最有效的方法来避免这种情况。
所以我尝试找到body
或frameset
元素并在我放弃之前重新加载几次。
此解决方案的优势还在于,如果Chrome将来更改其消息,它也可以使用。它也可以与其他浏览器一起使用。