如何使用XPath获取属性的值

时间:2014-04-30 17:50:25

标签: selenium xpath selenium-webdriver

我一直在使用Selenium WebDriver进行测试,我一直在寻找一个XPath代码来获取HTML元素属性的值作为回归测试的一部分。但我找不到一个好的答案。

这是我的示例html元素:

<div class="firstdiv" alt="testdiv"></div>

我想使用XPath获取“alt”属性的值。我有一个XPath来使用class属性获取div元素:

//div[@class="firstdiv"]

现在,我正在寻找一个XPath代码来获取“alt”属性的值。假设我不知道“alt”属性的值是什么。

4 个答案:

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