1

zu erhalten Ich verwende Selen mit Java. Ich bin nicht in der Lage, Text vom html Element zu erhalten, das eine Combobox ist. Jedes Mal, wenn ich einen leeren Text für den ausgewählten Wert in der Combobox erhalte.Nicht möglich, Text von HTML-Element für Selenium Java

Unten ist meine HTML-Struktur für Combobox.

<ul id="servicetype-cave" class="z-combobox-content" style="height: auto;  width: auto;"> 
    <li id="zk_comp_140" class="z-comboitem"> 
    <li id="zk_comp_141" class="z-comboitem"> 
    <li id="zk_comp_142" class="z-comboitem"> 
    <li id="zk_comp_143" class="z-comboitem"> 
    <li id="zk_comp_144" class="z-comboitem z-comboitem-selected"> 
     <span class="z-comboitem-image"/> 
     <span class="z-comboitem-text">Bill Grouping Service</span> 
    </li> 
    <li id="zk_comp_145" class="z-comboitem"> 
    <li id="zk_comp_146" class="z-comboitem"> 
    <li id="zk_comp_147" class="z-comboitem"> 
    <li id="zk_comp_148" class="z-comboitem"> 
    <li id="zk_comp_149" class="z-comboitem"> 
    <li id="zk_comp_150" class="z-comboitem"> 
</ul> 

Ich habe unten XPath für das Element verwendete

@FindBy(xpath = "//ul[@id='servicetype-cave']/li[contains(@class,'z-comboitem-selected')]/span[@class='z-comboitem-text']") 
public WebElement selectedServiceName; 

public void selectService { 
// Selecting an option from dropdown 
WebElement tempEle = driver.findElement(By.xpath("(//div[@id='servicetype-pp']//span[2])[3]")); 
commonFunctions.clickElement(tempEle); 
String strtemp = selectedServiceName.getText(); 
System.out.println("Selected Service: " + strtemp); 
} 

Bitte helfen.

TIA.

+0

anzeigen Code, den Sie Text – Andersson

+0

@Andersson bekommen verwenden: Ich habe die Frage aktualisiert haben. –

Antwort

1

Ich schlage Sie versuchen, By.cssSelector() wie unten verwenden: -

WebElement el = driver.findElement(By.cssSelector("ul#servicetype-cave li.z-comboitem-selected span.z-comboitem-text")); 

oder

WebElement el = driver.findElement(By.cssSelector("ul#servicetype-cave li.z-comboitem.z-comboitem-selected span:nth-child(2)")); 

.getText() Verwenden Sie nun den Text wie unten zu bekommen:

el.getText(); 

leider Wenn .getText() funktioniert nicht versuchen mitwie unten:

el.getAttribute("textContent"); 

oder versuchen .getAttribute("innerHTML") wie unten verwenden:

el.getAttribute("innerHTML"); 

Hoffe, es funktioniert .. :)

+0

Treid mit getAttribute ("textContent"). Es hat vollkommen gut funktioniert. –

+0

Ich frage mich, warum funktioniert gettext() hier nicht? –

+0

@BhargavRaval es kann sein, Problem zu entwerfen, deshalb erhalten Sie nicht mit '.getText()' ... :) –

0

@FindBy ist bestrebt, Verinnerlichung. Das heißt, es initialisiert, wenn Pageobject erstellt. Sie sollten den Wert der Combo-Box nach einigen Voraussetzungen erhalten, nehme ich an. Verwenden Sie also lazy initialization. folgenden Code aufrufen nur an Ort und Stelle, wo Sie wirklich brauchen es

findElement(By.xpath("//ul[@id='servicetype-cave']/li[contains(@class,'z-comboitem-selected')]/span[@class='z-comboitem-text']")); 
Verwandte Themen