2014-10-03 2 views
1

Selenium의 드롭 다운에서 옵션을 선택할 때 와일드 카드를 사용할 수 있습니까? 나는 서버에 파일을 업로드하는 webapp에서 일하고있다. 파일을 업로드 한 후 드롭 다운에서 파일을 선택하여 작업을 수행 할 수 있습니다. 그러나 드롭 다운에는 파일과 파일 크기가 표시되므로 옵션을 보면 "파일 이름 - 0.5GB"가 표시됩니다. 값 속성을 무작위로 할당하고 selectByIndex를 사용할 수 없기 때문에 selectByValue를 사용할 수 없습니다. 옵션의 순서는 표시되는 파일의 수에 따라 달라질 수 있기 때문입니다.셀렌 - 와일드 카드를 사용하여 드롭 다운에서 옵션을 선택 하시겠습니까?

의 I이 (Java 코드) 같은 것 가지고 올 수있는 최고의 :

Select sel = = new Select(dropdown); 
List<WebElement> list = sel.getOptions(); 
for (WebElement option : list) { 
    if (option.getText().contains(data.getImageName())) { 
     sel.selectByVisibleText(option.getAttribute("value")); 
     break; 
     } 
} 

하지만 내가하지 않는 경우의 메뉴에서 옵션을 선택하는 더 나은 방법이 있어야한다 상상 정확한 텍스트가 표시됩니다. 거기 있니?

답변

-1

질문에 대한 답을 얻기 위해 패턴 일치를 요청하는 것처럼 들립니다. 다음은 Java의 Regular Expressions 설명서 링크입니다.

아마도 당신은 잘못된 질문을하고 있습니다. 당신은 정확하게 테스트하려고합니다. 즉, 드롭 다운에서 선택하려는 항목을 어떻게 알 수 있습니까?

1

Select class implementation에 따르면, relies on the full option text 아닌 부분 중 하나가 유일한 selectByVisibleText() 관련 방법이지만 : 당신이 볼 수 있듯이

List<WebElement> options = 
    element.findElements(By.xpath(".//option[normalize-space(.) = " + escapeQuotes(text) + "]")); 

, 그것은 XPath 식 내부 = 일치를 사용합니다.

이 솔루션은 XPath는의 contains()를 사용하여 옵션을 "수동"검색 및 호출하는 것입니다 setSelected() :

Select sel = = new Select(dropdown); 
WebElement option = driver.findElement(By.xpath('//path/to/select//option[contains(., "Partial text")]')); 
sel.setSelected(option); 
관련 문제