输入字段的ID为条件,并且getText()getAttribute()不起作用

driver.findElement(By.id("condition")).getText() //is not working..


所以我尝试在控制台

document.getElementById("condition").value //return the value.


所以我尝试了

JavascriptExecutor jse = (JavascriptExecutor) driver;
System.out.println(jse.executeScript("document.getElementById(condition).value");
String value = jse.executeScript("document.getElementById(condition).value").toString();
AssertVerify(value, "15");


出现以下错误:

org.openqa.selenium.WebDriverException: JavaScript error (WARNING: The server did not provide any stacktrace information)


如何使用JavaScript获取值并将其分配给其他变量。

最佳答案

您的代码试用期接近完美。您需要在单引号内传递元素的id属性,即'...',如下所示:

String value = ((JavascriptExecutor)driver).executeScript("document.getElementById('condition').value").toString();




更新资料

由于仍然无法通过executeScript()方法检索值,因此需要诱使WebDriverWait使所需元素可单击,并且可以使用以下解决方案:


使用getAttribute()检索文本:

String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))).getAttribute("value");

使用executeScript检索文本:

WebElement myElem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition")));
String value = ((JavascriptExecutor)driver).executeScript("document.getElementById('condition').value").toString();

10-08 20:13