如何从数据格式化的数据中选择一个元素'标签使用selenium wedriver

时间:2016-03-22 12:04:57

标签: html selenium

我有一系列元素:

<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。

有关如何使用数据格式标记查找元素的任何建议都会有很大帮助。感谢。

2 个答案:

答案 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");