亲爱的 Selenium Webdriver 2 专家,
我是这个框架的新手,需要您就以下网页 XHTML 片段上的一些 XPath 相关问题提出建议:
<dl class="cN-featDetails">
<dt class="propertytype">Property type</dt>
<!-- line 3 --> <dd id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_ddPropertyType" class="propertytype type-house" title="Property type: House">House</dd>
<!-- line 3a --> <!-- or class="propertytype type-townhouse"--->
.......
<div class="main-wrap">
<div class="s-prodDetails">
<a id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_hypMainThumb" class="photo contain" href="/Property/For-Sale/House/LA/St Gabriel/?adid=2009938763">img id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_imgMainThumb" title="44 Crown Street, St Gabriel" src="http://images.abc.com/img/2012814/2778/2009938763_1_PM.JPG?mod=121010-210000" alt="Main photo of 44 Crown Street, St Gabriel - More Details" style="border-width:0px;" /></a>
<div class="description">
<h4><span id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_lblPrice">Offers Over $900,000 </span></h4>
<h5>SOLD BY WAISE YUSOFZAI</h5><p>CHARACTER FAMILY HOME... Filled with warmth and charm, is a very well maintained family home in a quiet level street. Be...</p>
</div>
<a id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_hypMoreDetails" class="button" href="/Property/For-Sale/House/LA/St Gabriel/?adid=2009938763">More Details</a>
<dl id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_dlAgent" class="agent">
<!-- line 19 --> <dt>Advertiser</dt>
<!-- line 20 --> <dd class="contain">
<!-- line 20a --> <!-- or class="" -->
<img id="ctl00_ctl00_Content_Content_SrchResLst_rptResult_ctl04_lstTemplate_imgAgencyLogo" title="Carmen Jones Realty" src="http://images.abc.com/img/Agencys/2778/searchlogo_2778.GIF" style="border-width:0px;" />
</dd>
</dl>
</div>
(a) 如何检验一个元素是否存在?例如,第 3 行或第 3a 行存在,但不是两者都存在。findElement() 方法将导致我试图避免的异常。另一种选择是在检查其集合列表结果是否为空之前使用 findElements()。这种方法似乎是一种冗长的方法。有没有其他更简单的方法来验证元素的存在而不会有导致异常的风险?以下语句不起作用或导致异常:
WebElement resultsDiv = driver.findElement(By.xpath("/html/body/form/div[3]/div[2]/div[1]/h1/em"));
// If results have been returned, the results are displayed in a drop down.
if (resultsDiv.isDisplayed()) {
break;
}
( b ) 是否有一种简单的方法可以通过将布尔运算符和正则表达式合并为 findElement() 或 findElements() 的一部分来验证任一元素的存在?这将显着减少查找的数量并简化搜索。
(c) 是否可以在通过 TagName 搜索 Element 时使用 XPath 语法。例如 driver.findElement(By.tagName("/div[@class='report']/result"));
( d ) 是否可以在 XPath 搜索中使用正则表达式,例如 driver.findElement(By.xpath("//div[@class='main-wrap']/dl[@class='agent']/dd[@ class='' OR @class='contain']")) 对于第 20 - 20a 行?
(e) 如何引用紧随其后的节点?例如假设当前节点是
我过去曾在 XML 文档上使用 XPath,但想扩展在 Webdriver 2 中定位元素的能力。
任何帮助都会非常感激。
非常感谢,
杰克