2016-12-19 1 views
3

Ich habe diese Schaltfläche: -Wie kann ich auf eine div-Schaltfläche mit Selen-Webdriver klicken?

<div class="dsk-col-1-4 card new"> 
 
    <div class="div_center_div"> 
 
     <span class="icon icon_plus-black-symbol"></span> 
 
     <h2>Create</h2> 
 
    </div> 
 
    </div>

Aber ich versuchte mit find Element von classname: -

driver.findElementByClassName("dsk-col-1-4 card new").click(); 

Aber es funktioniert nicht. Irgendwelche Hilfe?

Antwort

2

Die „von Klassenname“ Locator erwartet in der Regel eine einzelnen Klassennamen weitergegeben werden:

driver.findElementByClassName("card").click(); 

Wenn Sie mehrere Klassen verwenden möchten, gehen Sie mit einem „von CSS-Selektor“

driver.findElementByCssSelector(".card.new").click(); 

Beachten Sie, dass die dsk-col-1-4 Klasse keine sehr gute Wahl für einen Element-Locator ist - das sieht sehr ähnlich aus wie ein Layout-orientierter Klassenname, der nicht nur eine höhere Wahrscheinlichkeit hat, geändert zu werden, sondern auch keine Informa bringt über das Element und seinen Zweck. card und new auf der anderen Seite sind eine bessere Passform.

+0

i die CSS aus diesem Element erhalten verwenden müssen: driver.findElementByCssSelector (“ html body div.main div.addon_karten.fluidwrap div.dsk-col-1-4.card.new "). click(); aber es funktioniert nicht. –

0

Ok, damit ich nicht genau Element, das verstehen könnten Sie klicken auf möchten, auf meine Annahme So basiert, versuchen Sie unter XPaths:

1), wenn es <div class="dsk-col-1-4 card new"> ist, dass Sie

//div[contains(@class,'dsk-col-1-4 card new')] 
klicken möchten

2) Wenn es ist, dass Sie klicken möchten,

//span[contains(@class,'icon icon_plus-black-symbol')] 

3) Wenn es <h2>Create</h2> ist, den Sie klicken möchten,

//h2[text()='Create'] 

Ich hoffe, dies hilft!

0

Innerhalb Ihres Locators übergeben Sie mehrere Klassennamen, und obwohl sie beide dem Element zugewiesen sind, funktioniert die findElementByClassName-Funktion nur, wenn es sich um einen einzelnen Klassennamen handelt. So wie ich es tun würde, wäre findelement zu verwenden (By.Xpath()), in diesem Fall würden Sie

webDriver.findElement(By.xpath("//div[contains(@class,'dsk-col-1-4 card new')]")).click(); 
Verwandte Themen