如何通过getAttribute()或executeScript()方法提取输入字段的值?

时间:2018-08-21 12:26:00

标签: java selenium selenium-webdriver webdriver getattribute

有一个输入字段,其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获取值并将其分配给其他变量。

1 个答案:

答案 0 :(得分:2)

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

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

更新

由于您仍然无法通过executeScript()方法检索,因此需要诱使 WebDriverWait 使所需的元素可点击< / em>,则可以使用以下解决方案:

  • 使用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();