2016-05-13 2 views
0

Wie extrahiere ich Links in span Elemente in einer Tabelle in Selen?So extrahieren Sie Links in Span-Elementen in einer Tabelle mit Selenium

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

Ich versuche zu überprüfen, ob die Verknüpfungen in allen Zeilen in der Tabelle korrekt sind. Dafür versuche ich, den Text info wie unten zu extrahieren: (. Es wäre nur ein span Element in einer Spalte sein)

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

Antwort

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

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

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

Falls es Ihnen nicht lassen erhalten, das ‚a‘ Tag direkt aus Tabelle

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

Das erhalten alle Verbindungselemente aus der Spalte 1 und dann auf den Link-Extrakt mit GetAttribute

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

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