2014-05-22 25 views
6

By.id veya By.cssSelector kullanarakText() öğesini almak istiyorum.Selenyum getText

Sorunumu getAttribute ("value") yaparak çözmeyi başardım, ancak getText() 'in neden beklediğim gibi çalışmadığını anlamıyorum ve buna ihtiyacım var, bu yüzden tüm yardımlar takdir ediliyor.

WebDriverWait wait = new WebDriverWait(driver, 10);   
Boolean elementIsPresent = wait.until(ExpectedConditions.textToBePresentInElementValue(By.cssSelector("#general_service_name"),"[reg] general_service_name")); // true   

//WebElement general_service_name = driver.findElement(By.cssSelector("#general_service_name")); 
WebElement general_service_name = driver.findElement(By.id("general_service_name")); 

// Display check 
Boolean isDisplayed; 
if(general_service_name.isDisplayed()) isDisplayed = new Boolean(true); else isDisplayed = false; //true 

String text_empty = general_service_name.getText(); //"" 
String text_with_value = driver.findElement(By.id("general_service_name")).getAttribute("value"); //"[reg] general_service_name" 

Ve html:

<input id="general_service_name" type="text" value="[reg] title" name="general_service_name" style="float:left;"/> 
+0

getText yalnızca görünen metni döndürür ve herhangi bir HTML öğesini GERÇEKLEŞTİRMEZ ve hiçbir gizli metni İADE ETMEZ. Örneğin, Java ile bu sorunu boş dönen BR etiketi ile yapıyordum. '.getText()' yerine, '.getAttribute (" innerHTML ")' i kullandım. Bu, daha sonra görünmeyen herhangi bir HTML veya gizlenen metin dahil olmak üzere aradığım şeyi döndürecektir. – jsherk

cevap

0

Basit yanıt - bu şekilde tasarlanmıştır. getText(), girişler için açıkça boş olan etiketin içeriğini (yani, onun innerText) ayrıştırır.

2

Java ele.getAttribute("innerHTML");

Bu zaten arka planda ve henüz sayfada görüntülenen metni alabilir.

+0

Bu, getText() öğesinin boş bir dize döndürdüğü bir durumda gerçekten yardımcı oldu, ancak çözümünüz, öğesinin iç Metnini döndürdü. Teşekkürler ! – Chris