我有id="time"
的元素。此元素的值是动态更改的时间(采用“hh:ss”格式)(使用名为timer()
的JavaScript脚本):
网站的一些代码:
<html>
<head>
<script type="text/javascript">
var time = {"m":59,"s":59};
function timer() {
if (time['s'] < 0) {
time['s'] = 59;
time['m']--;
}
if (time['m'] == 0 && time['s'] == 0) {
//do something
} else {
if (time['s'].toString().length == 2) {
return time['m'] + ':' + time['s']--;
} else {
return time['m'] + ':0' + time['s']--;
}
}
}
time = document.getElementById('time')
setInterval('time.innerHTML=timer()', 1e3)
</script>
<head>
<body>
(...)
<span id="time"></span>
(...)
</body>
</html>
现在我希望使用Selenium-WebDriver在Java中获得元素的当前值。
我试图通过span元素的getText()
或getAttribute("innerHTML")
来做到这一点,如下所示:
String time = driver.findElement(By.id("time")).getText();
或
String time = driver.findElement(By.id("time")).getAttribute("innerHTML");
但它不起作用 - time
在这两种情况下都是一个空字符串。
然后我尝试在Selenium中使用JavaScript:
JavascriptExecutor js = (JavascriptExecutor) driver;
String time = (String) js.executeScript("return document.getElementById('time').innerHTML;");
但是time
也是一个空字符串。
在FireBug控制台中执行的脚本返回正确的值,例如:
>>> document.getElementById("time").innerHTML;
"58:20"
那么...如何在Selenium中获取当前值?