2017-01-25 6 views
1

を使用してAJAXの応答に、私がやろうとしていることページdriver.Navigate().GoToUrl("http://somepage.com")を「開く」され、その後、すぐブロック"http://somepage.com/something.asmx/GetStuff"からの応答を確認することができるように応答がロードされる前にクラス、driver.FindElement(By.CssSelector("buttom.some-button")).GetAttribute("class").Contains("disabled")、次にdisabledがロードされます。私はいくつかの要素がいくつかを持っていることをどのように「ブロック」要約するとセレン

これは可能なのでしょうか?その場合はどうすればいいですか?

私の質問は、達成しようとしているものでSelenium Webdriver c# without waiting for page to loadに似ています。あなたの要求は$.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") 

+0

あなたはSeleniumをそれに使うことはできませんが、FiddlerCoreと組み合わせれば実行可能になるはずです - http://stackoverflow.com/questions/25541499/how-to-capture-http-request-using-fiddlercore- in-c/26323323#26323323 –

答えて

0

は、次のような、IJavacriptExecutorにIWebDriver(FirefoxDriver、ChromeDriver、など)のインスタンスをキャストし、スタブとjQueryの$.ajax()方法を置き換えます方法。

これは、リクエストが作成されていないため、ブロックした後に「続行」するリクエストを簡単に取得できないという欠点があります。上記の手順を実行せずにページを更新する必要があり、何らかの偽陽性となる可能性があります。

関連する問題