Выявление рабочих ссылок и не рабочих ссылок в селене C # - PullRequest
0 голосов
/ 03 декабря 2018

Я захожу на сайт -> Я читаю ссылки из текстового файла (в котором есть рабочие и неработающие ссылки) -> Я использую HttpWebRequest и HttpWebResponse для обнаружения рабочих и не работающих ссылок --- Вот основныепроблема ---> Я пытаюсь разделить рабочие и не рабочие ссылки и войти в два разных файла.Но все входит в один файл.Я использую свойство StatusCode, чтобы различать два.Но не удачно.Пожалуйста, найдите код ниже.Я очень плохо знаком с селеном C #.

public void Login()
    {
        WebDriver.Navigate().GoToUrl($"{ApplicationUrl}Login.aspx");
        WebDriver.Manage().Window.Maximize();
        WebDriver.FindElement(By.Id("UserName")).SendKeys(_user.Login);
        WebDriver.FindElement(By.Id("tbPassword")).SendKeys(_user.Passwort);
        IJavaScriptExecutor js = WebDriver as IJavaScriptExecutor; 
        js.ExecuteScript("arguments[0].click();", 
        WebDriver.FindElement(By.Id("LoginButton")));
        Thread.Sleep(3000);

        string fileName = @"TestFile.txt";
        // Reading the text file using StreamReader
        using (StreamReader sr = new StreamReader(fileName))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                WebDriver.Navigate().GoToUrl(line);
                IsLinkWorking(line);
            }
            WorkingLinks.Close();
            NotWorkingLinks.Close();
        }
    } 


    public void IsLinkWorking(string line)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(line);
        try
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                WorkingLinks.WriteLine(WebDriver.Url);
                // Releases the resources of the response.
                response.Close();
            }
            else
            {
                NotWorkingLinks.WriteLine(WebDriver.Url);
                response.Close();
            }
        }
        catch
        { //TODO: Check for the right exception here
        }
    }

1 Ответ

0 голосов
/ 03 декабря 2018

Когда код состояния HTTP выходит за пределы диапазона 200-299, он отправит на перехват, установите там свой код

catch
{ 
    NotWorkingLinks.WriteLine(WebDriver.Url);
}
...