我使用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)。
答案 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”将给出属性的值。