我一直在使用Selenium WebDriver进行测试,我一直在寻找一个XPath代码来获取HTML元素属性的值作为回归测试的一部分。但我找不到一个好的答案。
这是我的示例html元素:
<div class="firstdiv" alt="testdiv"></div>
我想使用XPath获取“alt”属性的值。我有一个XPath来使用class属性获取div元素:
//div[@class="firstdiv"]
现在,我正在寻找一个XPath代码来获取“alt”属性的值。假设我不知道“alt”属性的值是什么。
答案 0 :(得分:10)
您可以使用getAttribute()
方法。
driver.findElement(By.xpath("//div[@class='firstdiv']")).getAttribute("alt");
答案 1 :(得分:1)
只需使用executeScript
并在浏览器中执行XPath或querySelector/getAttribute
即可。其他解决方案是错误的,因为如果你有多个来自Selenium的每个元素都需要永远调用getAttribute
。
var hrefsPromise = driver.executeScript(`
var elements = document.querySelectorAll('div.firstdiv');
elements = Array.prototype.slice.call(elements);
return elements.map(function (element) {
return element.getAttribute('alt');
});
`);
答案 2 :(得分:1)
Selenium Xpath只能返回元素。 你应该传递执行xpaths的javascript函数并将字符串返回给selenium。
我不确定他们为什么这么做。 Xpath应该支持返回字符串。
答案 3 :(得分:0)
使用C#,。Net 4.5和Selenium 2.45
使用findElements将firstdiv元素捕获到集合中。
var firstDivCollection = driver.findElements(By.XPath("//div[@class='firstdiv']"));
然后遍历集合。
foreach (var div in firstDivCollection) {
div.GetAttribute("alt");
}