selenium 将FindElements的结果作为链接数组返回

w8rqjzmb  于 2022-12-26  发布在  其他
关注(0)|答案(2)|浏览(143)

我有一个类似这样的类:
someclass.cs

namespace XXX
{
    internal class yyy
    {
        public string getlink(string urlz)
        {
            var options = new ChromeOptions();
            using var driver = new ChromeDriver(options);
            driver.GoToUrl(urlz);
            var getlinks = driver.FindElements(By.XPath(".//xxxx/a"));
            foreach (var link in getlinks )
            {
                string resultlink = link.GetAttribute("href");
            }
            //question here
            return as array resultlink
        }
    }
}

基于上面的代码,我的问题是如何将所有resultlink作为数组返回,以便在表单中使用它?
例如
表格1

yyy listlink = new yyy();
var listalllink = listlink.getlink("domaindotcom");
foreach (var singlelink in listalllink )
{
    //do what ever I want
}
py49o6xq

py49o6xq1#

只需使用List类来保存链接集合

var getlinks = driver.FindElements(By.XPath(".//xxxx/a"));
List<string> array = new List<string>();
foreach (var link in getlinks )
    {
      string resultlink = link.GetAttribute("href");
      array.Add(resultLink);
    }
//question here
return array.toArray();

或使用Linq(首选):

getlinks.Select(link -> link.GetAttribute("href")).ToArray();
mkshixfv

mkshixfv2#

您的GetLink方法应该是:

public static IEnumerable<string> GetLink(string urlz)
{
    var options = new ChromeOptions();
    using var driver = new ChromeDriver(options);

    var elements = driver.FindElements(By.XPath(urlz));

    return elements.Select(element => element.GetAttribute("href")).ToArray();
}

相关问题