2012-04-10 7 views
1

existiert ich den Selen Web-Fahrer bin mit dem Beschriftungstext in den unten angegebenen HTML-Tags zu finden:Finding Beschriftungstext, wenn id nicht

<tr id="row" style="display: inline; padding-left: 10px; padding-right: 10px;"> 
<td> 
<table width="776" cellspacing="0" cellpadding="0" border="0"> 
<tbody> 
<tr> 
<td align="right">&nbsp;</td> 
<td>&nbsp;</td> 
<td align="right">&nbsp;</td> 
<td>&nbsp;</td> 
</tr> 
<tr> 
<td width="92" height="25" align="left">**Label Text&nbsp**;</td> 
<td width="227"> 
<td width="170" align="left">">**Label Text 2&nbsp**;</td> 
</td> 
</tr> 

I verwendet driver.findElement (By.id ("Zeile")) .getText(), aber es ruft mich nichts ab. Wie bekomme ich es Etikettentext zu drucken. Vielen Dank.

Antwort

0

Um auf die 'Label Text'-Zellen zuzugreifen, müssen Sie nach den Zellen selbst suchen und nicht die Zeile, die sie enthält. Wenn Sie WatiN verwenden würden, wäre dies der Fall. Eine alternative Möglichkeit, ein beliebiges Element mit ‚Label Text‘ zu finden wäre:

ReadOnlyCollection<IWebElement> temp = driver.FindElements(By.XPath("//td[@text='Label Text'])); 

Wenn ‚Label Text‘ in Ihrem Beispiel ein Platzhalter für verschiedenen Text ist dies heikel worden und man konnte nur jeweils greifen versuchen, Zelle innerhalb der Tabelle, die die Zellen enthält. Jedoch scheint nur die erste Zeile eine ID zu haben. Hoffe das hilft! Wenn Sie genau wissen, welche Zelle Sie wollen und eine eindeutige Größe hat (wie in Ihrem Beispiel), können Sie versuchen, alle Zellen zu finden und dann ihre Breiten manuell zu durchforsten (0). ZB: foreach (IWebElement temp in tempCells) { if (temp.Size.Width == 170) temp.Text; }

0
driver.FindElement(By.XPath(xpath)).GetAttribute("text") 
0

Verwenden Sie die Methode getText

driver.findElement(By.xpath("")).getText(); 
0

Meine Meinung:

List<WebElement> list; 
list = driver.findElements(By.xpath("id('row')//td[string-length(text()) > 1]")); 

dass ein List von <td> Elemente erhalten sollten, die einen Textknoten länger haben als 1 char (Änderung 5 wenn &nbsp; tatsächlich für 5 =)) zählt.

oder vielleicht

list = driver.findElements(By.xpath("id('row')//td[@align='left']")); 

, wenn alle Elemente, die Sie wirklich wollen gemeinsam den align = 'left' Teil haben zu erhalten, die in Ihrem Beispiel zu sehen ist.