给出以下HTML页面:
<html>
<head>
<title>WatiN Test</title>
</head>
<body>
<div>
<p>Hello World!</p>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望能够搜索一些文本(比方说"World"),并获得对其父元素的引用(在本例中为<p>元素).
如果我试试这个:
var element = ie.Element(Find.ByText(t => t.Contains("World")))
Run Code Online (Sandbox Code Playgroud)
或这个:
var element = ie.Element(e => e.Text != null && e.Text.Contains("World"));
Run Code Online (Sandbox Code Playgroud)
我找回了<html>元素.这与状态的WatiN文档一致Element.Text:"获取此元素的innertext(以及此元素中包含的所有元素的innertext)".
由于页面中的所有文本都包含在<html>元素中,因此我将始终将其返回而不是直接父级.
有没有办法直接在元素下面获取文本(而不是它包含的元素中的文本)?
还有另一种方法吗?
非常感谢.
下面的代码将找到包含<body/>“World”文本的第一个元素。被分类为元素容器并具有子元素的元素将被省略。
var element = ie.ElementOfType<Body>(Find.First()).Element(e =>
{
if (e.Text != null && e.Text.Contains("World"))
{
var container = e as IElementContainer;
if (container == null || container.Elements.Count == 0)
return true;
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
注意:您可能想知道为什么我写ie.ElementOfType<Body>(Find.First()).Element而不只是ie.Element. 这应该有效,但事实并非如此。我认为这是一个错误。我在 WatiN 邮件列表上写了一篇关于它的文章,当我收到答案时会更新这个答案。
| 归档时间: |
|
| 查看次数: |
7217 次 |
| 最近记录: |