2011-10-08 18 views
11

Próbuję wybrać element z listy select w selen za pomocą java ze składnią opartą na WebDriver.Jak korzystać z listy wyboru w selen?

Mam wybierz listę według

elements = driver.findElements(By.xpath("//form[@action='inquiry/']/p/select[@name='myselect']")); 
    if (elements.size() == 0) { 
     return false; 
    } 
    if (guests != null) { 
     //what do I do here? 
    } 

Jak mam to zrobić?

+0

czym jest "goście! = Zero" oznacza "elementy! = Zero"? – nilesh

Odpowiedz

19
WebElement select = driver.findElement(By.name("myselect")); 
Select dropDown = new Select(select);   
String selected = dropDown.getFirstSelectedOption().getText(); 
if(selected.equals(valueToSelect)){ 
    //already selected; 
    //do stuff 
} 
List<WebElement> Options = dropDown.getOptions(); 
for(WebElement option:Options){ 
    if(option.getText().equals(valueToSelect)) { 
     option.click(); //select option here;  
    }    
} 

Jeśli jest to wolniej, a następnie rozważyć coś takiego

dropDown.selectByValue(value); 
or 

dropDown.selectByVisibleText(text); 
1
element = driver.findElements(By.xpath("//form[@action='inquiry/']/p/select[@name='myselect']/option[*** your criteria ***]")); 
if (element != null) { 
    element.click(); 
} 

znaleźć opcję, a następnie click to

6

Mała dygresja, która odnosi się do Java:

W moim przypadku, gdy pisałem test na przykładzie @nilesh, dostałem dziwny błąd, t hat Konstruktor jest nieważny. Moja import był:

import org.openqa.jetty.html.Select; 

Jeśli zdarzy się, że podobne błędy, trzeba poprawić taki przywóz do tego:

import org.openqa.selenium.support.ui.Select; 

Jeśli używasz tego drugiego import, wszystko będzie działać.

+1

Nie wiem jak wy, ale osobiście nienawidzę java posiadającego wiele obiektów o identycznych nazwach w różnych przestrzeniach nazw –

0

spróbować zrobić to tak:

// metody, aby wybrać element z listy rozwijanej

public void selectDropDown (String Value) {

webElement findDropDown=driver.findElements(By.id="SelectDropDowm"); 
    wait.until(ExpectedConditions.visibilityOf(findDropDown)); 
    super.highlightElement(findDropDown); 
    new Select(findDropDown).selectByVisibleText(Value); 
} 

// metoda aby podświetlić element

public void highlightElement (element WebElement) {

for (int i = 0; i < 2; i++) { 

     JavascriptExecutor js = (JavascriptExecutor) this.getDriver(); 
     js.executeScript(
       "arguments[0].setAttribute('style', arguments[1]);", 
       element, "color: yellow; border: 3px solid yellow;"); 
     js.executeScript(
       "arguments[0].setAttribute('style', arguments[1]);", 
       element, ""); 

    } 

} 
Powiązane problemy