Как распечатать список URL-адресов для консоли с веб-страницы, используя драйвер Selenium chrome в C#? - PullRequest
2 голосов
/ 23 апреля 2020

Общая информация заключается в печати всех URL-адресов в указанном c месте на веб-сайте для консоли. Это может дать мне текст для всех ссылок, но не URL-адреса. пожалуйста помоги. извини, я очень новичок в кодировании. Мне сказали использовать другой веб-драйвер, но для моего текущего проекта я хочу остаться в Selenium.

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using OpenQA.Selenium.Support.UI;

namespace Test_Scraper_1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Initialize chrome driver
            using (var driver = new ChromeDriver())
            {
                driver.Navigate().GoToUrl("https://www.tfrrs.org/");

                //find elements
                var Search_Field = driver.FindElementByXPath(@"/html/body/div[3]/div/div/div[4]/div/div[2]/form/div[1]/input");
                var Search_Button = driver.FindElementByXPath(@"/html/body/div[3]/div/div/div[4]/div/div[2]/form/div[4]/button");

                var Count = 1;

                Search_Field.SendKeys("Ashley Smith");
                Search_Button.Click();

                var titles = driver.FindElementsByClassName("allRows");
                foreach (var allRows in titles)
                {
                    Console.WriteLine(allRows.Text + Count++);
                }

                Console.ReadLine();
            }
        }
    }
}

Ответы [ 3 ]

3 голосов
/ 23 апреля 2020

Ваш allRows является элементом tr, как показано ниже.

<tr class="filtered allRows ">
    <td id="col0">
        <a href="//www.tfrrs.org/athletes/3721395/Youngstown_St/Ashley__Smith_.html">Ashley  Smith </a>
    </td>

    <td id="col1">
        <a href="//www.tfrrs.org/teams/xc/OH_college_f_Youngstown_St.html">Youngstown St. (F)</a>
    </td>
</tr>

Но вам необходим атрибут href элемента a. Таким образом, вам нужно что-то вроде этого, при условии, что вы хотите первую ссылку:

var column0 = allRows.FindElement(By.Id("col0"));
var aElement = column0.FindElement(By.TagName("a"));
var link = aElement.GetAttribute("href");
1 голос
/ 23 апреля 2020

Используйте allRows.getAttribute("href") вместо allRows.Text в вашем foreach l oop, чтобы получить URL

0 голосов
/ 24 апреля 2020
namespace Test_Scraper_1
{
class Program
{
    static void Main(string[] args)
    {
        //Initialize chrome driver
        using (var driver = new ChromeDriver())
        {
            driver.Navigate().GoToUrl("https://www.tfrrs.org/");

            //find elements
            var Search_Field = driver.FindElementByXPath(@"/html/body/div[3]/div/div/div[4]/div/div[2]/form/div[1]/input");
            var Search_Button = driver.FindElementByXPath(@"/html/body/div[3]/div/div/div[4]/div/div[2]/form/div[4]/button");

            var Count = 1;
            //Navigate to target page
            Search_Field.SendKeys("Ashley Smith");
            Search_Button.Click();

            var titles =driver.FindElementsByClassName("allRows");   // driver.FindElementByLinkText("Ashley Smith");


            foreach (var title in titles)
            {
                var Link_Name_TFRRS = title.FindElement(By.TagName("a")).GetAttribute("href"); ;    

                Console.WriteLine(Link_Name_TFRRS);
            }


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