2017-06-27 6 views
0

Ich habe versucht, den Additionsvorgang von 1 + 7 unten zu testen; aber weiß nicht , wie die Ergebnisausgabe des Textfelds, dessen Attribut "Name" ist "Eingabe" erhalten.Java Selen webdriver - Text aus einem Textfeld holen

Jeder Zeiger würde geschätzt werden.


package hw9; 

import java.util.concurrent.TimeUnit; 
import org.junit.*; 
import static org.junit.Assert.*; 
import org.openqa.selenium.*; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class calculator { 
    private WebDriver driver; 
    private String baseUrl; 

    @Before 
    public void setUp() throws Exception { 
    driver = new FirefoxDriver(); 
    baseUrl = "http://www.math.com/"; 
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    } 

    @Test 
    public void testCalculator() throws Exception { 
    driver.get(baseUrl + "/students/calculators/source/basic.htm"); 
    driver.findElement(By.name("one")).click(); 
    driver.findElement(By.name("plus")).click(); 
    driver.findElement(By.name("seven")).click(); 
    driver.findElement(By.name("DoIt")).click(); 

    String output = driver.findElement(By.name("Input")).getText(); 
    System.out.println("Output: " + output); // **<--- Empty output** 
    assertEquals(8,output); 

    } 

    @After 
    public void tearDown() throws Exception { 
     driver.quit(); 
    } 
} 

HTML Code in Frage wird im Folgenden aufgeführt:


 <td> 
     <div align="center"> <font size="+1"> 
      <input name="Input" type="text" size="16"> 
      </font></div> 
     </td> 
+0

Verwenden Sie 'By.id (" Eingabe ")' –

+0

Das Element hat keine ID; Es hat nur Namen und Typ-Attribute. – user1972031

+0

Sie haben im ersten Satz ein Textfeld angegeben, dessen ID "Eingabe" ist. Außerdem würde es hilfreich sein, wenn Sie den HTML-Code der getesteten Seite gepostet haben. –

Antwort

4

driver.findElement(By.name("Input")).getAttribute("value") Versuchen.

element.getText() wird verwendet, um den Textknoten innerhalb eines Tags zu erhalten, zum Beispiel <tagname>text</tagname>.

Aber eine Eingabe hat nicht den Text innerhalb des Tags (durch einen Knoten dargestellt), aber innerhalb des Wertes Attribut; zum Beispiel: <input type="text" value="SomeValue">.

Also, wenn Sie den Knoten Text innerhalb eines Elements erhalten möchten, müssen Sie element.getText() verwenden, aber wenn Sie den Wert einer Eingabe erhalten möchten, müssen Sie element.getAttribute("value") verwenden.

+0

Es gibt kein Wertattribut. – user1972031

+1

Ich glaube, das sollte funktionieren, siehe https://stackoverflow.com/questions/7852287/using-selenium-web-driver-to-retrieve-value-of-a-html-input –

+0

Hallo, @ user1972031! Wenn kein Wertattribut vorhanden ist, bedeutet dies, dass der Wert oder Text der Eingabe leer ist. In diesem Fall wird beim Aufrufen von element.getAttribute ("value") null zurückgegeben. – Thisisalexis

Verwandte Themen