无法找到元素

时间:2017-09-13 16:23:30

标签: c# selenium selenium-chromedriver

我需要找到a href元素并返回其内容。

以下是来源中的内容:

<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">merkl@gmail.com</a>
</font>
</body>
</html>
</iframe>
</div>

尝试打印Div的outerHTML,这是我能找到的唯一元素:

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

但它并没有返回href内容,只有这个:

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

我已尝试直接找到href元素,但无法找到它,CssSelector为:

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

还试过XPath:

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

3 个答案:

答案 0 :(得分:2)

您需要通过.getAttribute(value)获取属性值,该值返回String

所以试试这个:

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

答案 1 :(得分:0)

您尝试提取WebElement属性href的{​​{1}}位于blablabla?subject=blebleble之内,因此您必须先切换到iframe然后搜索/查找元素以提取iframe属性,如下所示:

href

答案 2 :(得分:0)

原因是其他元素没有被打印,因为程序在生成OuterHTML之前拉得太快了。

使用:

解决
  System.Threading.Thread.Sleep(5000);

这样它就可以打印Div中的所有内容