我需要使用FindBy获取H5元素,其中包含以下HTML中的文本"ALLEN“:
<div id="showAboutContent" class="modal fade in" style="display: block;" aria-hidden="false">
<div class="modal-dialog" style="width: 550px;">
<div class="modal-content">
<div class="modal-header" style="color: #96c4f3;background-color: #071c3f;">
<div class="modal-body" style="background-color: #D6E3F9; overflow-y: hidden; ">
<div class="modal-body" style="margin-left: 10px; margin-top: -20px; overflow-y: hidden;">
<img style="width:120px;height:120px; opacity:20" src="/ALEX/Logo/AboutBoxLogosvg.svg">
<h5>
<h5>
<h5>
<b> ALEX Version: 1.6.0 </b>
</h5>
<h5>
<b> ALLEN Version: 1.4.0 </b>
</h5>
<div style="background-color: #D6E3F9; padding: 10px; text-align: right; ">
</div>
</div>
</div>
</div>
</div>
</div>
我没有包括整个页面的HTML,我不认为有必要包括在内,因为我已经找到了包含H5的框架:
var aboutFrame = driver.FindElement(By.Id("showAboutContent"));
因此,由于我已经找到了该元素,所以通过使用它的标签名和索引,然后在该框架中找到了我想要的h5,如下所示:
var allenVersion = aboutFrame.FindElements(By.TagName("h5"))[3];
但是,我希望使用某种类型的“文本包含”方法来查找元素。这是因为可能会有更多的h5添加到该窗口,所以我不想像我一直在做的那样按索引查找它,我希望它是一个“包含”类型的查询,因为版本号总是变化的。所以我可以做一篇包含“艾伦·弗森”的文章。
发布于 2016-03-01 23:01:51
也许有几种方法可以剥去这个皮。
方法1:检查所有h5元素
一种方法是选择所有的H5标记,然后识别您要寻找的标记。可能看起来像这样。
var allenVersion;
var tags = aboutFrame.FindElements(By.TagName("h5"));
foreach (var tag in tags) {
if (tag.Contains("ALLEN Version")) {
allenVersion = tag;
break;
}
}
方法2:XPath
您还可以使用XPath选择器来查找版本元素。您可以围绕文档结构或正在寻找的文本设计XPath选择器。这可能看起来像这样。
var allenSelector = By.XPath("//*/div[@class='modal-body'/h5[4]");
var allenVersion = aboutFrame.FindElement(allenSelector);
或
var allenSelector = By.XPath("//*/h5/b[contains(text(), 'ALLEN Version')]");
var allenVersion = aboutFrame.FindElement(allenSelector);
https://stackoverflow.com/questions/35734610
复制相似问题