如何使用Selenium提取表中span元素中的链接

时间:2016-05-13 02:09:48

标签: c# selenium

如何在Selenium中的表中的span元素中提取链接?

<table id="tabABC">
    <tr>
        <td>
            <span id="randomidIdontknow">
                 <a style="color: red" href="http://google.com" target="_blank">FancyLink</a>
             </span>
        </td>
</table>

我正在尝试验证表中所有行中的链接是否正确。为此,我试图提取如下文字信息:

IWebElement mytab = Context.CurrentDriver.FindElement(By.Id("tabABC"));
ReadOnlyCollection<IWebElement> myRows = mytab.FindElements(By.XPath(".//tbody/tr"));

foreach (var myRow in myRows ) 
{
    var myCol = myRow .FindElements(By.XPath(".//td"));
    var res = myRow .FindElement(By.XPath(".//td[0]")).Text;
}

(列中只有一个span元素。)

2 个答案:

答案 0 :(得分:1)

var tableElem = driver.FindElement(By.Id("tabABC"));

var linkElems = tableElem.FindElements(By.Tag("a"));

var links = linkElems.Select(x => x.GetAttribute("href")).ToList()

如果它不允许您直接从表中获取'a'标记

var spanElems = tableElem.FindElements(By.Tag("span"));

var linkElems = spanElems.SelectMany(x => x.FindElements(By.Tag("a"));

var links = linkElems.Select(x => x.GetAttribute("href")).ToList();

答案 1 :(得分:0)

获取第1列中的所有链接元素,然后使用GetAttribute

提取链接
var linkElements = mytab.FindElements(By.CssSelector("#tabABC tr > td[1] a[href]"));

foreach (var linkElement in linkElements ) 
{
    var link = linkElement.GetAttribute("href");
}