Java 如何通过getAttribute()或executeScript()方法提取输入字段的值?
有一个id为条件的输入字段,Java 如何通过getAttribute()或executeScript()方法提取输入字段的值?,java,selenium,selenium-webdriver,webdriver,getattribute,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;
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");
WebElement myElem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))); String value = ((JavascriptExecutor)driver).executeScript("document.getElementById('condition').value").toString();
- 使用
检索文本:executeScript
String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))).getAttribute("value");
WebElement myElem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))); String value = ((JavascriptExecutor)driver).executeScript("document.getElementById('condition').value").toString();
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");
WebElement myElem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))); String value = ((JavascriptExecutor)driver).executeScript("document.getElementById('condition').value").toString();
- 使用
检索文本:executeScript
String myText = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))).getAttribute("value");
WebElement myElem = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("condition"))); String value = ((JavascriptExecutor)driver).executeScript("document.getElementById('condition').value").toString();
“document.getElementById('condition').value”
,在condition
周围加上撇号。您是如何尝试getAttribute()
getAttribute(“value”)
应该可以工作。正如@Guy所说,对于输入文本框,您必须使用getAttribute(“value”)
读取其中的键入字符串。对于其他控件,应该使用只能获取控件只读文本的getText()
。对于您的案例,无需使用executeScript
。它应该是“document.getElementById('condition').value”
,并在condition
周围加上撇号。您是如何尝试getAttribute()
getAttribute(“value”)
应该可以工作。正如@Guy所说,对于输入文本框,您必须使用getAttribute(“value”)
读取其中的键入字符串。对于其他控件,应该使用只能获取控件只读文本的getText()
。无需为您的案例使用executeScript
。为元素id添加了single,但返回null,但在控制台中运行时返回值。请尝试第二个。。第一个不起作用,因为我已经提到了。请测试更新后的答案,并让我知道状态。为元素id添加了single,但返回null,但在控制台中运行时返回值。请尝试第二个。。第一个不起作用,因为我已经提到了。请尝试更新答案,并让我知道状态。