2017-01-25 33 views
1

综上所述,我想要做的是“开放”的网页driver.Navigate().GoToUrl("http://somepage.com")然后立即块从"http://somepage.com/something.asmx/GetStuff"的响应,这样我可以证实,一些元素有一定的在加载响应之前的类:driver.FindElement(By.CssSelector("buttom.some-button")).GetAttribute("class").Contains("disabled"),然后是disabled如何“块”的Ajax响应使用Selenium

是这样的可能,如果是这样,我怎么做呢?

我的问题是在什么它试图实现类似Selenium Webdriver c# without waiting for page to load

+0

我不认为你可以使用Selenium为,但FiddlerCore配对应该是可行的 - http://stackoverflow.com/questions/25541499/how-to-capture-http-request-using-fiddlercore-在-C/26323323#26323323 –

回答

0

投下你IWebDriver(FirefoxDriver,ChromeDriver等),以IJavacriptExecutor的实例,并更换了jQuery $.ajax()方法有存根,如:

var driver = Driver as IJavaScriptExecutor 

driver.ExecuteScript("window.originalAjax = $.ajax") 
driver.ExecuteScript("$.ajax = function() {}") 

// navigate to page, check class 

driver.ExecuteScript("$.ajax = window.originalAjax") 

所以,当您的请求调用进入$.ajax会打一个空白方法。

这样做的缺点是,你不能轻易得到请求“继续”封锁之后,因为没有请求曾经创造。您将不得不刷新页面,而不执行上述步骤,这可能会导致某种误报。