我正在尝试使用XPATH检索元素列表,并且从此列表中我想基于类名检索子元素并单击它。
DOM
答案 0 :(得分:0)
我不知道node.js,但在Java中你应该通过以下方式实现目标:
titleList[i].findElementBy(By.className("classToFind"))
假设titleList [i]是列表上的元素,您想从
获取子元素答案 1 :(得分:0)
我有一个类似的实现可能是你想要做的,但是由于使用CSS选择器而不是XPath,我的实现可能更复杂。我确信这不是优化的,而且最有可能得到改进。
这使用来自WebdriverIO的方法elementIdText()
和elementIdClick()
来处理Web JSON元素的“文本值”,然后在匹配您要查找的内容后单击所需的元素。
http://webdriver.io/api/protocol/elementIdText.html http://webdriver.io/api/protocol/elementIdClick.html
第1步 - 找到您想要使用的所有潜在元素:
// Elements Query to return Elements matching Selector (titles) as JSON Web Elements.
// Also `browser.elements('<selector>')`
titles = browser.$$('<XPath or CSS selector>')
第2步 - 循环使用Elements剥离InnerHTML或文本值并将其推送到单独的数组中:
// Create an Array of Titles
var titlesTextArray = [];
titles.forEach(function(elem) {
// Push all found element's Text values (titles) to the titlesTextArray
titlesTextArray.push(browser.elementIdText(elem.value.ELEMENT))
})
步骤3 - 循环浏览标题文本数组值以查找您要查找的内容。使用elementIdClick()函数单击所需的值:
//Loop through the titleTexts array looking for matching text to the desired title.
for (var i = 0; i < titleTextsArray.length; i++) {
if (titleTextsArray[i].value === title) {
// Found a match - Click the corresponding element that
// it belongs to that was found above in the Titles
browser.elementIdClick(titles[i].value.ELEMENT)
}
}
我把所有这些都包含在一个函数中,我在其中提供了我想要搜索的预期文本(在您的情况下是一个特定的title
)。希望这有帮助!