我有一系列元素:
<li data-formatted="12:00am" data-minutes="0">12:00am</li>
<li data-formatted="1:00am" data-minutes="10">1:00am</li>
<li data-formatted="2:00am" data-minutes="20">2:00am</li>
.
.
<li data-formatted="12:00pm" data-minutes="80">12:00pm</li>
我面临的问题是找到li列表中的任何一个元素。只有当我至少能够使用任何属性标记识别它时才能使用driver.findElements(),因为它没有任何类似的名称,css或id。
有关如何使用数据格式标记查找元素的任何建议都会有很大帮助。感谢。
答案 0 :(得分:0)
您可以使用CssSelector或XPath来查找它们。
以下是查找li
元素的示例表达式,该元素具有属性data-formatted
且属性包含&#34; m&#34;:
driver.findElements(By.cssSelector("li[data-formatted*='m']"));
driver.findElements(By.xpath("//li[contains(@data-formatted, 'm')]"));
答案 1 :(得分:0)
您可以通过querySelectorAll()
API选择包含数据属性的元素,并使用vanilla JS标准数据集API直接访问所有元素的数据属性。
在您的情况下,要获取具有data-formatted
属性的元素,您可能会喜欢
var formettedEls = document.querySelectorAll("[data-formatted]");
或
var El1AM = document.querySelectorAll("[data-formatted = '1:00am']");
或作为另一个选项,您可以通过数据集API在formattedEls
中搜索特定的<{1}}
function findData(set, searchDataProp, searchData){
Array.prototype.forEach.call(set, function(el){
(el.dataset[searchDataProp] == searchData) && console.log(el.dataset[searchDataProp], searchData);
});
}
findData(formattedEls, "formatted", "12:00am");