2014-10-03 89 views
1

從Selenium的下拉菜單中選擇選項時是否可以使用通配符?我正在上傳一個文件上傳到服務器的Web應用程序。上傳文件後,我可以通過從下拉列表中選擇文件來執行操作。但是,下拉菜單顯示文件以及文件大小,因此在查看選項時將顯示「文件名 - 0.5 GB」。我無法使用selectByValue,因爲value屬性是隨機分配的,我無法使用selectByIndex,因爲選項的順序可能會根據顯示的文件數而變化。Selenium - 使用通配符從下拉列表中選擇一個選項?

我能想出是這樣的(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,只有selectByVisibleText()相關的方法,但它relies on the full option text,不是部分之一:

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

正如你所看到的,它使用XPath表達式內的=比賽。

的解決方案將是一種選擇「手動」找到使用XPath的並調用setSelected()

Select sel = = new Select(dropdown); 
WebElement option = driver.findElement(By.xpath('//path/to/select//option[contains(., "Partial text")]')); 
sel.setSelected(option); 
相關問題