2017-02-27 9 views
1

Ich versuche, ein Element aus Dropdown-Menü zu wählen, da in html Tag nicht als Auswahl für Dropdown verwendet wird, dann wählte ich Dropdown-Element über Aktion.
nicht möglich, Element aus Dropdown in Selen zu wählen webdriver

Meine Frage ist dieser Standard Weg, Code zu wählen Drop-Down-Element in dieser Situation oder sollte sollte ich meinen Code ändern müssen.

import org.openqa.selenium.By; 
    import org.openqa.selenium.JavascriptExecutor; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.chrome.ChromeDriver; 
    import org.openqa.selenium.interactions.Actions; 
    import org.openqa.selenium.support.ui.Select; 

    public class test 
    { 
    static WebDriver driver; 
    public static void main(String[] args) 
    { 
     System.setProperty("webdriver.chrome.driver", "D:\\rakesh\\software\\selenium browser\\New folder\\chromedriver.exe"); 
     driver=new ChromeDriver(); 
     driver.get("https://app.crossover.com/x/marketplace/available-jobs"); 
     driver.manage().window().maximize(); 
     driver.findElement(By.cssSelector(".btn.btn-default.form-control.ui-select-toggle")).click(); 

     WebElement dropdonw_ele = driver.findElement(By.xpath("/html/body/div[2]/div[3]/div/div/div/div[2]/form/div/div[2]/job-label-select/div/ul/li/div[5]/span/div/span")); 
     Actions act = new Actions(driver); 
     act.build(); 
     act.moveToElement(dropdonw_ele).click(); 
     act.perform(); 
    } 
} 
+0

Eine Antwort? @rocky –

Antwort

0

Versuchen Sie diesen Weg.
Hinweis: Verwenden Sie Relative xpath, nicht absolute xpath.

driver.get("https://app.crossover.com/x/marketplace/available-jobs"); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
driver.findElement(By.xpath("//span[@class='ui-select-match-text pull-left']/span")).click();   //click on All job categories first 
Thread.sleep(3500); 
driver.findElement(By.xpath("//div[@class='ng-scope']/span[contains(text(), 'C++')]")).click();  //By using xpath method click on C++ from the dropdown selection. 
Thread.sleep(3500); 
+0

Hast du es mit meinem Code versucht? –

+0

ok Danke @jainish Ich hatte tatsächlich Probleme mit relativen XPath, da einige der Elemente auf der Seite dynamisch geändert wurden. – rocky

+0

Bitte markieren Sie diese Antwort als 'Akzeptiert', wenn Ihre Anfrage gelöst wurde. Weil es auch anderen Benutzern helfen wird. :) –

0

wenn Ihr Dropdown ein native HTML-Drop-Down ist an der org.openqa.selenium.support.ui.Select Klasse einen Blick darauf werfen.

//simplify this xpath expression? 
WebElement dropdonw_ele = driver.findElement(By.xpath("/html/body/div[2]/div[3]/div/div/div/div[2]/form/div/div[2]/job-label-select/div/ul/li/div[5]/span/div/span")); 
Select dropDown = new Select(dropdonw_ele); 
dropDown.selectByValue("your item value"); 

wenn es kein native HTML-Tag ist, können Sie entweder Aktionen oder Sie können das Wertefeld, ohne eine Aktion direkt anklicken. Wenn dies nicht funktioniert, weil das Dropdown-Wertelement nicht sichtbar ist, können Sie es mit JavaScript anklicken.

private void clickWithJavaScript(WebElement target) { 
     JavascriptExecutor executor = (JavascriptExecutor) driver; 
     executor.executeScript("arguments[0].click()", target); 
} 
0

Hallo Rocky Sie müssen möglicherweise Aktionsklasse nicht verwenden. Unten ist der bearbeitbare Code, den Sie an Ihrem Ende ausprobieren können und lassen Sie mich wissen.

public class test 
{ 
static WebDriver driver; 
public static void main(String[] args) 
    { 
    System.setProperty("webdriver.chrome.driver", "D:\\rakesh\\software\\selenium browser\\New folder\\chromedriver.exe"); 
    WebDriver driver = new ChromeDriver(); 
    driver.manage().window().maximize();  
    driver.get("https://app.crossover.com/x/marketplace/available-jobs"); 
    Thread.sleep(3000L); 
    driver.findElement(By.xpath(".//*[@ng-click='$select.toggle($event)']")).click(); 
    Thread.sleep(3000L); 
    driver.findElement(By.xpath(".//*[contains(text(),'iOS and Android')]")).click(); 
    Thread.sleep(3000L); 
    } 
} 

Bitte versuchen Sie an Ihrem Ende. Happy Learning :-)

Verwandte Themen