如何在Selenium中使用Xpath从字段'time'获取属性(JAVA)

时间:2016-03-17 00:35:19

标签: java selenium xpath

我使用Java + Selenium获取属性值(datetime)并遇到问题。

这是我的HTML:

<div itemtype="garbage" class="content">
<time itemprop='datePublished' datetime='2016-03-16 22:30:03(my aim)'>abnews.ru 16.03.2016 22:30</time>

我的代码应该采用以下格式:

(1) String articleDate = driver.findElement(By.xpath("myCodeHere")).getText();

我的代码在哪里

div/time/@datetime

但是在这种情况下我得到了错误:

div/time/@datetime' selected an object of type 'class com.gargoylesoftware.htmlunit.html.DomAttr' instead of a WebElement. 

例如,如果我的代码是

div/time

我得到的结果如下:     “abnews.ru 16.03.2016 22:30”

帮助我任何人,如何在不改变我的代码格式的情况下获取此信息,我的意思是(1)。

2 个答案:

答案 0 :(得分:0)

关于你的XPath://div/time/@datetime,HtmlUnit说你试图将属性视为一个元素是正确的。 WebDriver只关注元素,如果你试图匹配任何其他东西,它会变得混乱。返回WebElement后,您可以按名称请求任何属性。所以你需要的是:

String articleDate = driver.findElement(By.xpath("//div/time")).getAttribute("datetime");

哪个应该给你:2016-03-16 22:30:03(my aim)

在元素上调用getText()会为您显示可见文字:abnews.ru 16.03.2016 22:30

您不需要从XPath更改为CSS路径或类似的东西。

答案 1 :(得分:0)

FindElement(By.CssSelector("div time")).GetAttribute("datetime");

尝试以上鳕鱼;我希望这对你有用。如果这不起作用,请告诉我 或者:

FindElement(By.CssSelector("div time[datetime]")).GetAttribute("datetime");

您所做的是,您获得了<time>开放标记</time>之间的值。     abnews.ru 16.03.2016 22:30

“gettext”将给出标记之间的值。

“GetAttribute”将给出属性的值。