2016-08-29 17 views
1

Ich versuche herauszufinden, die Lösung, wie das Ziel von Prod2 aus dem folgenden Code erhalten.Wie kann ich die Liste erweitern und dynamischen Wert wählen?

Um dieses Ziel zuerst zu bekommen, muss ich auf ptv-icon ptv-collapse-icon klicken. Dies ist mit XPATH möglich, aber jedes Mal, wenn ich das Skript ausführe, ändert sich Xpath.

Ist es möglich, eine beliebige Methode zur Lokalisierung zu verwenden Neue direkt hinzufügen.

Ein weiteres Problem ist, dass: New hinzufügen Element ist nur sichtbar, nachdem ich auf ptv-Symbol ptv-Kollaps-Symbol klicken werde.

<li class="ptv-listitem" data-id="1"> 
<div class="ptv-item"> 
<span class="ptv-icon ptv-expand-icon"></span> 
<span class="ptv-text"> 
<span class="tree-text">Prod1</span> 
<span class="tree-counts"></span> 
</span> 
</div> 
</li> 
<li class="ptv-listitem" data-id="2"> 
<div class="ptv-item"> 
<span class="ptv-icon ptv-collapse-icon"></span> 
<span class="ptv-text ptv-selected"> 
<span class="tree-text">Prod2</span> 
<span class="tree-counts"></span> 
</span> 
</div> 
<ul class="ptv-list ptx-expanded"> 
<li class="ptv-listitem" data-id="-1"> 
<div class="ptv-item"> 
<span class="ptv-text"> 
<span class="tree-text">**Add New**</span> 
<span class="tree-counts"></span> 
</span> 
</div> 
</li> 
</ul> 
</li 

Antwort

0

(Vorausgesetzt, Sie verwenden Java) Sie sollten versuchen, xpath mit Text verwenden, das würde nie wie unten ändern werden: -

//to click on prod2 
driver.findElement(By.xpath(".//li[contains(.,'Prod2')]//span[@class = 'ptv-icon ptv-expand-icon']").click(); 

//to click on add new 
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath(".//li[contains(.,'Add New')]"))).click(); 
+1

Danke. Ihr Code ist für mein Problem am besten geeignet. Nur ich musste einige Teile ersetzen ** enthält ** bis ** beginnt - mit ** – leset

0

Sie kann das Element von den 2 Klassen von UL auszuwählen und eine Klasse der Spannweite:

WebDriver.findElement(By.cssSelector("ul.ptv-list.ptx-expanded span.tree-text")).click() 

Das bedeutet, wählen Sie eine span Element tree-text Klasse aufweist, die im Inneren eines ist ul elemenent sowohl mit ptv-list und ptx-expanded Klassen.

Verwandte Themen