2017-09-13 3 views
3

Je dois trouver l'élément a href et renvoyer son contenu.Impossible de trouver l'élément

Voici le contenu de la source:

<div id="responseDiv" style="background-color:#EBECED;width: 450px;"> 
<iframesrc="/iframe.asp" width="575" height="120" frameborder="0" 
marginwidth="1" marginheight="1" scrolling="no"> 
#document 
<html> 
<head> </head> 
<body marginwidth="1" marginheight="1"> 
<font size="3" style = "letter-spacing: 0pt" color="#336699" face="Arial" 
<a href="blablabla?subject=blebleble" target="_blank">[email protected]</a> 
</font> 
</body> 
</html> 
</iframe> 
</div> 

outerHTML d'impression Essayé de la division, qui est le seul élément que je peux trouver:

IWebElement pisso = driver.FindElement(By.XPath("//*[@id="responseDiv"]")); 
string outerHTML = pisso.GetAttribute("outerHTML"); 

Mais il ne retourne pas le href contenu, seulement ceci:

<div id="responseDiv" style="background-color:#EBECED;width: 450px;"> 

<iframe src="/iframe.asp" width="575" height="120" frameborder="0" marginwidth="1" marginheight="1" scrolling="no"> 
    &lt;p&gt;Your browser does not support iframes.&lt;/p&gt;</iframe> 

</div> 

J'ai essayé de trouver l'élément href directement, mais il ne peut pas le trouver, Cs sSelector comme:

IWebElement pisso = driver.FindElement(By.CssSelector("body > font > a")); 

aussi essayé XPath comme:

IWebElement pisso = driver.FindElement(By.XPath("/html/body/font/a")); 

Répondre

1

Vous devez obtenir la valeur d'attribut via .getAttribute(value), qui renvoie une String.

Donc, essayez ceci:

String hrefValue = driver.FindElement(By.CssSelector("#responseDiv body font a")).getAttribute("href"); 
+0

Il est revenu ne peut pas trouver cette exception de l'élément –

+0

est l'élément visible? Ou dans un popup? – jaredgilmore

+1

semble être dans un iFrame, vous devrez donc passer à ce iFrame. – smit9234

0

Le WebElement à partir duquel vous essayez d'extraire l'attribut href-à-dire blablabla?subject=blebleble est dans un iframe donc vous devez passer à la iframe première recherche/trouver alors l'élément pour extraire l'attribut href comme suit:

driver.SwitchTo().Frame(driver.FindElement(By.XPath("//iframe[@src='/iframe.asp'])); 
IWebElement pisso = driver.FindElement(By.XPath("/html/body/font/a")); 
0

Transforme les autres éléments ne sont pas imprimés se parce que le programme en tirant le OuterHTM L trop vite, avant qu'il ne soit généré.

résolu en utilisant:

System.Threading.Thread.Sleep(5000); 

De cette façon, il imprimé tout à l'intérieur de la division