java - Java- 从列表中读取第一个值并使用 Intellij 存储在变量中
问题描述
我在尝试从 Web 元素列表中检索和保存第一个值时遇到问题。我写了一个 XPATH 来检索,但它正在获取空值。令人惊讶的是,相同的 xpath 在 chrome 浏览器中可以正常工作。所以请指导我了解哪里出了问题。请找到下面的 HTML 代码和 XPath。
从下面的值列表中,我应该选择第一个值并存储在一个变量中。(即咖啡)
<ul id="ui-id-1" tabindex="0" class="ui-menu ui-widget ui-widget-content ui-autocomplete ui-front" style="width: 132.667px; top: 440.885px; left: 531px; display: none;">
<li class="ui-menu-item"><a id="ui-id-6" tabindex="-1" class="ui-menu-item-wrapper"></a></li>
<li class="ui-menu-item"><a id="ui-id-7" tabindex="-1" class="ui-menu-item-wrapper">Coffee</a></li>
<li class="ui-menu-item"><a id="ui-id-8" tabindex="-1" class="ui-menu-item-wrapper">Tea</a></li>
<li class="ui-menu-item"><a id="ui-id-9" tabindex="-1" class="ui-menu-item-wrapper">Milk</a></li>
</ul>
XPATH (//ul[@id='ui-id-1']//li//a[@class='ui-menu-item-wrapper'])[2]
我很困惑,为什么这个 xpath 在 chrome 浏览器中正确突出显示,但同样是在从脚本运行时给出空值。请帮我解决问题。
注意:-在读取值之前,首先我单击选择下拉菜单,然后尝试读取值。
解决方案
您可以输入以下代码
WebElement ul_element = driver.findElement(By.xpath("x_path_to_your_ul_tab"));
List<WebElement> li_list = ul_element.findElements(By.tagName("li"));
WebElement first_li_element = li_list.get(0);
您也可以迭代所有 li 元素,如下所示
for (WebElement li : li_list ) {
if (li.getText().equals(role)) {
li.click();
}
}
推荐阅读
- python - 如何在随机选择函数中读取包含两列的行文件
- apache-nifi - 如何在 nifi 中为 csv 文件生成 Avro 模式
- powershell - PowerShell Studio exe不会在打包的exe中按下按钮时启动新的Windows窗体
- azure-ad-b2c - MSAL / MS Graph 代码适用于 .Net Core 3.1,但不适用于 .Net Framework 4.8
- node.js - 在 Nodejs 无状态下通过 twitter 进行身份验证
- python - 使用 Python docx 库阅读导航标题
- r - 将月份转换为跨越 4 年的连续数字
- python - OpenCV imdecode 不返回
- reactjs - redux saga 函数被调用两次
- swift - SwiftUI 拖动手势适用于父视图