Как определить, происходит ли сбой загрузки страницы во вновь запущенном браузере? - PullRequest
1 голос
/ 14 декабря 2009

Я использую Process.Start("firefox.exe", "http://localhost/page.aspx"); И как я могу узнать, что страница не работает или нет? ИЛИ ЖЕ Как узнать через HttpWebRequest, страница HttpWebResponse не работает или нет?

Когда я использую

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("somepage.aspx");
HttpWebResponse loWebResponse = (HttpWebResponse)myReq.GetResponse();
Console.Write("{0},{1}",loWebResponse.StatusCode, loWebResponse.StatusDescription);

как я могу вернуть информацию об ошибке?

Не нужны дополнительные плагины и фреймворки. Я хочу выбрать эту проблему только по .net

Любая идея, пожалуйста

Ответы [ 4 ]

4 голосов
/ 14 декабря 2009

Используйте Watin для автоматизации Firefox вместо Process.Start. Это платформа автоматизации браузера, которая позволит вам следить за тем, что происходит правильно.

http://watin.sourceforge.net/

изменить: см. Также Google Webdriver http://google -opensource.blogspot.com / 2009/05 / introduction-webdriver.html

2 голосов
/ 14 декабря 2009

Если вы порождаете дочерний процесс, это довольно сложно, и вам, вероятно, придется использовать специфический API каждого браузера (например, FF и IE не будут одинаковыми).

Не помогает, что во многих случаях exe обнаруживает существующий экземпляр и перенаправляет запрос туда (поэтому вы не можете доверять коду выхода, так как страница даже не была запрошена в нужном exe) .

Лично я стараюсь избегать использования какого-либо конкретного браузера для этого сценария; просто запустите URL:

Process.Start("http://somesite.com");

Это будет использовать браузер пользователя по умолчанию. Однако вы должны надеяться, что оно появится - вы не можете (надежно и надежно) проверить это извне без особой работы.

Еще один вариант - прочитать данные самостоятельно (WebClient.Download*) - но это может иметь проблемы со сложными файлами cookie, входом в систему, осведомленностью агента пользователя и т. Д.

1 голос
/ 14 декабря 2009

Используйте класс HttpWebRequest или класс WebClient, чтобы проверить это. Я не думаю, что Process.Start вернет что-то, если URL не существует.

0 голосов
/ 14 декабря 2009

Не запускайте страницу в этой форме. Вместо этого создайте локальный http://localhost:<port>/wrapper.html, который загружает http://localhost/page.aspx, а затем либо http://localhost:<port>/pass.html, либо http://localhost:<port>/fail.html. localhost: это простой интерфейс сервера HTTP, реализованный вашим приложением.

Идея состоит в том, что Javascript предоставляет вам API внутри браузера, который намного более стандартен, чем API на вне браузеров. Поскольку Javascript в файле wrapper.html поступает с того же сервера и даже порта, что и последующие ресурсы, он должен соответствовать политикам того же источника в текущих браузерах.

...