инструмент / скрипт для посещения всех страниц в проекте ASP.NET? - PullRequest
0 голосов
/ 24 августа 2011

Кто-нибудь знает инструмент, скрипт, пакет, что бы я мог использовать для посещения всех страниц в проекте веб-приложения ASP.NET Webforms? (мы не используем функциональность MVC)

Предпочтительно, я хотел бы иметь возможность создавать список URL-адресов для нажатия, редактировать список, чтобы я мог добавить некоторые параметры строки запроса, просмотреть все страницы в списке и собрать коды ответов HTTP: (200, 404 500, 301, что угодно).

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Я создал приложение WinForms, которое получает страницы, к которым можно получить доступ из .csproject, и может открывать их, нажимая кнопку.

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;

namespace OpenAllPages
{
    public partial class Form1 : Form
    {
        public static IList<string> Pages;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string xmlstring = ReadXml("TaskManager.csproj");
            Pages = ParseAllPages(xmlstring);
            pagesListBox.DataSource = Pages;
        }

        private string ReadXml(string location)
        {
            try
            {
                var myFile = new StreamReader(location);
                string myString = myFile.ReadToEnd();
                myFile.Close();
                return myString;
            }
            catch (Exception e)
            {
                MessageBox.Show(String.Format("An error occurred: '{0}'", e.Message));
            }
            return null;
        }

        private IList<string> ParseAllPages(string xmlstring)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xmlstring);
            XPathNavigator nav = xmlDoc.DocumentElement.CreateNavigator();
            XmlNamespaceManager manager = new XmlNamespaceManager(nav.NameTable);
            manager.AddNamespace("x", "http://schemas.microsoft.com/developer/msbuild/2003");
            var elements = nav.Select("x:ItemGroup/x:Content", manager);

            var pageList = new List<string>();
            while (elements.MoveNext())
            {
                var page = elements.Current.GetAttribute("Include", "");
                if (page.EndsWith(".aspx"))
                    pageList.Add(page);
            }
            return pageList as IList<string>;
        }

        private string AddPagePrefix(string page)
        {
            return "http://localhost:8080/" + page;
        }

        private void openAllButton_Click(object sender, EventArgs e)
        {
            foreach (string page in Pages)
                System.Diagnostics.Process.Start("chrome.exe", AddPagePrefix(page));
        }
    }
}

Вот ссылка на код

Вам нужно поместить файл проекта, который содержит страницы, которые вы хотите открыть, в проект OpenAllPages и установить для его свойства Copy to Output значение «Copy if newer».

Я Form1_Load меняю TaskManager.csproj на имя вашего файла проекта. И в:

System.Diagnostics.Process.Start("chrome.exe", AddPagePrefix(page));

переименуйте параметр в исполняемый файл браузера, который вы используете.

0 голосов
/ 24 августа 2011
  • Время проектирования

Вместо использования строковых литералов для URL-адресов в приложении определите методы Url () в каждом классе страницы следующим образом:

public static string Url() { get { return "~/this_page.aspx"; } }
public static string Url(int ID) { get { return "~/this_page.aspx?id=" + ID; } }

Или перечислить все URL в статическом классе

public static class URL {
    public static string Login() { get { return "~/login.aspx"; } }
    public static string DisplayRecord(int recordID) 
        { get { return "~/display.aspx?id=" + recordID; } }
  • 1012 * Продолжительность *

Используйте среду веб-тестирования, чтобы отсканировать все ссылки и отредактировать результат. Я написал в блоге об одном возможном решении с использованием Selenium.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...