繁体   English   中英

如何下载链接文本 - Selenium C#

[英]How to download linked text - Selenium C#

我正在尝试创建一个自动化来从带行的文本中下载文件。 不幸的是,我无法让它工作。 我是 selenium 的新手。

这是 HTML 站点代码:

Ttnc-18p - 17.34 GB

<table class="table table-stripped">
    <thead>
        <tr>
            <th>Name</th>
            <th>Größe</th>
            <th>DL</th>
        </tr>
    </thead>

    <tbody>
                    <tr>
            <td><a href="/get/vobqwunyrrxl2oo5">Ttnc-18p.part01.rar</a>
            </td><td>500.00 MB</td>
            <td><a href="/get/vobqwunyrrxl2oo5"><img width="16" height="16" src="//filer.net/media/images/ico_arrow_down.png?2018" alt="DL"></a>
        </td></tr>
                    <tr>
            <td><a href="/get/rgpwrydtby6s1zdh">Ttnc-18p.part01.rev</a>
            </td><td>500.00 MB</td>
            <td><a href="/get/rgpwrydtby6s1zdh"><img width="16" height="16" src="//filer.net/media/images/ico_arrow_down.png?2018" alt="DL"></a>
        </td></tr>
                    <tr>
            <td><a href="/get/qjfyfyusx9pbycrg">Ttnc-18p.part02.rar</a>
            </td><td>500.00 MB</td>
            <td><a href="/get/qjfyfyusx9pbycrg"><img width="16" height="16" src="//filer.net/media/images/ico_arrow_down.png?2018" alt="DL"></a>
        </td></tr>
                    <tr>
            <td><a href="/get/pydwswtrhoqenolb">Ttnc-18p.part03.rar</a>
            </td><td>500.00 MB</td>
            <td><a href="/get/pydwswtrhoqenolb"><img width="16" height="16" src="//filer.net/media/images/ico_arrow_down.png?2018" alt="DL"></a>
        </td></tr>

我希望它从以下位置下载链接:Ttnc-18p.part01.rar、Ttnc-18p.part02.rar、Ttnc-18p.part03.rar 等等……我试过这个:

ChromeDriver.FindElement(By.XPath("/table[contains(@class,'table table-stripped')]/tbody/tr/td/a[contains(text(),'" + "Ttnc-18p.part01.rar" + "')]")).Click();

它不起作用,我不知道该怎么做。 其他任何事情都失败了。

我要尝试的第二件事是代码将生成需要下载的链接数组,以便我可以将代码提供给具有不同链接数量的不同网站。

请帮忙。

您可以尝试以下方法,但您可能希望将它们分解为单独的可重用方法:

public IEnumerable<string> DownloadLinks(string url)
{
    // for storing each href value as it is retrieved from the links
    var listOfLinks = new List<string>();

    // start your instance of ChromeDriver
    var driver = new ChromeDriver();
    
    // Navigate to the url you passed in
    driver.Navigate().GoToUrl(url);

    // Get a collection of all anchor ("a") tags. 
    var anchorTags= driver.FindElements(By.TagName("a"));

    // Now for each anchor tag...
    foreach(var link in anchorTags)
    {
        // ...retrieve the value of its 'href' attribute (i.e. your link)...
        var l = link.GetAttribute("href");
        
        // ...add the link path to your listOfLinks
        // and append your url to the href since the href is only a partial 
        // ( /get/vobqwunyrrxl2oo5 becomes https://yourwebsite.com/get/vobqwunyrrxl2oo5)
        listOfLinks.Add(url + l);
        
        // now click your link to simulate clicking the link and downloading the file
        link.Click();
    }

    // and finally return your list of links
    return listOfLinks;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM