2013-04-10 11 views
1

Я написал следующее, после запуска этого кода он возвращает пустое значение String. Может ли кто-нибудь предложить мне решить эту проблему? Здесь я использовал метод gettext(). Он не получает имена ссылок.Почему метод GetText возвращает пустую строку

Мой код:

package Practice_pack_1; 

import java.util.List;  

import org.openqa.selenium.By;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.WebElement;  
import org.openqa.selenium.firefox.FirefoxDriver;  
import org.testng.annotations.AfterTest;  
import org.testng.annotations.BeforeTest;  
import org.testng.annotations.Test; 

public class CheckingUncheckingCheckbox { 
    WebDriver driver; 
    @BeforeTest 
    public void open() 
    { 
    driver=new FirefoxDriver(); 
    driver.navigate().to("http://openwritings.net/sites/default/files/radio_checkbox.html"); 
} 
@AfterTest 
public void teardown() throws InterruptedException 
{ 
    Thread.sleep(3000); 
    driver.quit(); 
} 
@Test 
public void CheckingChkbox() throws InterruptedException{ 
    WebElement parent = driver.findElement(By.xpath(".//*[@id='fruits']")); 
    List<WebElement> children = parent.findElements(By.tagName("input")); 
    int sz= children.size(); 
    System.out.println("Size is: "+sz); 
    for (int i = 0; i <sz; i++) 
    { 
     boolean check= children.get(i).isSelected(); 
     if(check==true) 
     { 
      System.out.println(children.get(i).getText()+ "is selected"); 
     } 
     else 
     { 
      System.out.println(children.get(i).getText()+ "is not selected"); 
     } 
    } 
} 

}

Выход:

Size is: 3  
is selected  
is not selected 
is selected 
PASSED: CheckingChkbox 

ответ

6

Что касается вашего приложения вам может понадобиться использовать getAttribute("value") вместо getText(), как GetText вернуть внутренний текст.

1

Если вы заходите и проверяете HTML-код своей страницы, внутри тега нет внутреннего текста. Поэтому вы не можете использовать getText().

Предполагаю, что вы хотите получить значение входных тегов. Если вы проверите свой альянс HTMl, в теге ввода будет атрибут value. Вы можете прочитать это значение, используя, getAttribute("value")

0

Попробуйте удалить "." до вашего XPath, и убедитесь, что ваш элемент XPath правильно

попробовать этот driver.findElement(By.id("fruits")).getText());

0

Я изменился на пути вы программирования на «лучше» один, используя потенциал Java и его инструментов.

На самом деле GetText() используется, чтобы поймать текст bewteen тега, как

<input id="input1" value="123"> getText() catches here </input> 

и GetAttribute() ловит значение указанного атрибута.

<input id="input1" value=" getAttribute("value") catches here ">123</input> 

Это моя версия вашего кода ниже.

@Test 
public void CheckingChkbox() throws InterruptedException{ 
    WebElement parent = driver.findElement(By.xpath(".//*[@id='fruits']")); 
    List<WebElement> children = parent.findElements(By.tagName("input")); 
    System.out.println("Size is: "+children.size()); 
    for (WebElement el : children) 
    { 
    if(el.isSelected()) 
    { 
     System.out.println(el.getAttribute("value")+ "is selected"); 
    } 
    else 
    { 
     System.out.println(el.getAttribute("value")+ "is not selected"); 
    } 
    } // end for 
}// end CheckingChkbox() 
Смежные вопросы