java - 如何检查来自 UL 的 LI 是否有字符串(有任意数量的 UL)
问题描述
示例 1:城市是卡尔加里
<div class="listresults">
<ul id="company_1" class="companylist">
<li><b>HEATCRAFT Freezing LTD., a Division of Lennox Inc.</b></li>
<li>#8 - 7797 - 98th Street S. E.</li>
<li>Calgary,AB T9H 9S6</li>
<li>(603) 252-6322</li>
</ul>
<ul id="company_2" class="companylist">
<li><b>SEARS INDOOR CLEAN WIND SERVICES (202222 ALBERTA LTD.)</b></li>
<li>895 - 49 Avenue N. E.</li>
<li>Calgary,AB T9E 9N4</li>
<li>(603) 230-2629</li>
</ul>
<ul id="company_3" class="companylist">
<li><b>ARPI'S INDUSTRIES CANADA LTD., a Division of Lennox Inc.</b></li>
<li>6895 - 40 Street S. E.</li>
<li>Calgary,AB T9C 9W7</li>
<li>(603) 236-2666</li>
</ul>
<ul id="company_4" class="companylist">
<li><b>SHEET Plastics WORKS</b></li>
<li>P. O. Box 49089, 7740 - 98th St., S.E.</li>
<li>Calgary,AB T9C 8W5</li>
<li>(603) 279-0022</li>
</ul>
</div>
示例 2:城市是极光
<div class="listresults">
<ul id="company_1" class="companylist">
<li><b>SUMMERS AND SMITH ROOFING & Freezing LTD.</b></li>
<li>55 Industrial Parkway South</li>
<li>Aurora,ON L4G 8Y5</li>
<li>(905) 727-2323</li>
</ul>
<ul id="company_2" class="companylist">
<li><b>BEST CLIMATE Freezing AND ROOFING INC.</b></li>
<li>68 Mugford Avenue</li>
<li>Aurora,ON L4G 7H5</li>
<li>(905) 713-3212</li>
</ul>
</div>
问题:如何在 div class="listresults" 中检查任意数量的 UL,第三个 LI 将始终包含 %city。我不一定需要文本,我只需要验证它是否具有 %city。我希望这由 xPath 完成。
这是我尝试过的:(在上面的例子中,城市是卡尔加里或奥罗拉)
List<WebElement> elements = driver.findElements(By.xpath(String.format("//ul[@class='companylist']/td[3 and contains(text(), '%s')]", city)));
for (WebElement element: elements) {
System.out.println(element.getText());
}
即使我将 xPath 更改为 "//ul[@class='companylist']/td[3]" 以仅从该 TD 中查找文本,以便我可以在驱动程序之外对其进行解析,它也不会返回 TD 字段价值观。
解决方案
我意识到我的 xPath 的问题在于,在 UL 中,当我实际寻找 LI 时,我正在寻找 TD。哎呀。感谢大家的帮助!
Kiril S.发布的稍微修改的答案解决了这个问题
List<WebElement> elements = driver.findElements(By.xpath("//ul[@class='companylist']/li[3]"));
for(WebElement element : elements) {
if(element.text().contains(city)) ...
}
推荐阅读
- java - NoSuchMethodError Java
- c++ - 功能不打印任何解决方案
- r - R data.table - 将两列相乘,其成分是矩阵
- angular - combineLatest 订阅未触发
- javascript - 如何在angular js中将输入字段值转换为base64编码或解码
- javascript - React-Spring 错误:来自 react-spring 的“动画”库返回错误元素类型无效
- python - 字段“mobile_number”不存在(odoo12)
- recaptcha - Yeezy Supply SiteKey
- android - 为什么应用程序在 Play 商店的启动报告中崩溃?
- apache-kafka - 如何将单个 csv 文件缓存到 Kafka 中的 KTable 中?