[英]Selenium C# waiting for page to load - UnexpectedJavaScriptError
[英]Selenium Webdriver c# without waiting for page to load
我有以下場景:
我想導航到一個頁面。 然后在出現時立即單擊按鈕(不等待頁面加載)。 我不想等待初始頁面加載,因為它需要很長時間。 我的程序當前一直停滯,直到頁面加載,然后單擊按鈕。
我基本上想要導航到鏈接,然后沒有等待頁面並繼續我的代碼。
無論如何圍繞這個?
使用最新版本的.NET綁定,您可以設置頁面加載超時。 但是,您需要注意一些警告。 首先,並非所有瀏覽器都實現了這一點。 如果內存服務,它應該適用於IE和Firefox。 其次,您需要捕獲異常以使其正常工作,但可以完成。
// WARNING! Completely untested code written without
// the benefit of an IDE!
IWebDriver driver = new InternetExplorerDriver();
driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(1));
try
{
driver.Url = "http://your.long.loading.page.com";
}
catch (TimeoutException)
{
// NOTE: In 2.26 or later, this will be WebDriverTimeoutException
}
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("yourId"));
}
IWebDriver driver = new FirefoxDriver();
driver.Url = "http://somedomain/url_that_delays_loading";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("someDynamicElement"));
});
它完全符合你的要求。 它查詢頁面以查找元素,如果沒有找到元素則捕獲異常並在找到時返回元素。
之后,您可以操作按鈕,忽略無法加載頁面的事實
簡答:不。
答案很長:Selenium默認嘗試模擬真實用戶 - 我知道它有點糟糕,特別是有時你需要在部署后部署后測試部署...
但是:如果真實用戶必須等待按鈕出現,那么程序也必須這樣做......
順便說一句:如果按鈕確實出現在頁面的第一位,你可以試試這個:
如上所述:我選擇的語言是Java。 我可以做到這一點。 但我不知道如何用C#寫出來
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.