2016-05-13 119 views
0

如何提取Selenium中表格中span元素的链接?如何使用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> 

我想验证表中所有行中的链接是否正确。对于这一点,我想提取物作为下面的文本信息:(有将只有一个span在一列元素)

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; 
} 

回答

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

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

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

在情况下,它不会让你直接从表

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(); 
0

得到的“a”标签的得到第1列中的所有链路的元素,然后提取与链路

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

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