2016-06-27 2 views
0

Я закодировал для выбора опции в раскрывающемся меню, используя следующий код.Selenium Webdriver выпадающий вариант

new Select (driver.findElement(By.xpath("//select[@name='fromAccount']"))).selectByIndex(10); 

new Select (driver.findElement(By.xpath("//select[@name='toAccount']"))).selectByIndex(18); 

Но это своего рода жесткое кодирование. Если я изменю параметр входа, каждый раз, когда я должен обновить свой индекс, поскольку учетные записи не будут в одном индексе для каждого входа. Все, что мне нужно, это иметь функцию или оператор цикла, который автоматически выбирает опцию dropdown.

Он должен выбрать личную учетную запись в обоих случаях, и оба счета From и To должны отличаться.

<select class="select" id="fromAccount" name="fromAccount"> 
<option>---------------- Select account ---------------</option> 
<option value="236881510">6227/084-737 23-688-1510 ($5,889.66)</option> 
<option value="236937684">Line Of Credit #7684/083-047 23-693-7684 ($49,850.00)</option> 
<option value="236188564">Line Of Credit #8564/083-047 23-618-8564 ($50,000.00)</option> 
<option value="5386390000107472">NAB Traveller Card #7472/5386-3900-0010-7472</option> 
<option value="236940963">Personal Account #0963/083-047 23-694-0963 ($836.00)</option> 
<option value="236871603">Personal Account #1603/084-737 23-687-1603 ($70.12)</option> 
<option value="236841914">Personal Account #1914/084-737 23-684-1914 ($0.00)</option> 
<option value="236832014">Personal Account #2014/084-737 23-683-2014 ($10.00)</option> 
<option value="236152254">Personal Account #2254/083-047 23-615-2254 ($261.69)</option> 
<option value="236802325">Personal Account #2325/084-737 23-680-2325 ($413.80)</option> 
<option value="236772648">Personal Account #2648/084-737 23-677-2648 ($282.00)</option> 
<option value="236693421">Personal Account #3421/084-737 23-669-3421 ($31.00)</option> 
<option value="236673607">Personal Account #3607/084-737 23-667-3607 ($11.00)</option> 
<option value="236884818">Personal Account #4818/084-737 23-688-4818 ($33.00)</option> 
<option value="236855136">Personal Account #5136/084-737 23-685-5136 ($10.00)</option> 
<option value="236845229">Personal Account #5229/084-737 23-684-5229 ($1.00)</option> 
<option value="236815513">Personal Account #5513/084-737 23-681-5513 ($7.15)</option> 
<option value="236805614">Personal Account #5614/084-737 23-680-5614 ($0.00)</option> 
<option value="236766029">Personal Account #6029/084-737 23-676-6029 ($1.00)</option> 
<option value="236756138">Personal Account #6138/084-737 23-675-6138 ($0.00)</option> 
<option value="236746204">Personal Account #6204/084-737 23-674-6204 ($0.00)</option> 
<option value="236736313">Personal Account #6313/084-737 23-673-6313 ($0.00)</option> 
<option value="236696710">Personal Account #6710/084-737 23-669-6710 ($0.00)</option> 
<option value="236657105">Personal Account #7105/084-737 23-665-7105 ($0.00)</option> 
<option value="236868316">Personal Account #8316/084-737 23-686-8316 ($0.00)</option> 
<option value="236858425">Personal Account #8425/084-737 23-685-8425 ($0.00)</option> 
<option value="236828736">Personal Account #8736/084-737 23-682-8736 ($0.00)</option> 
<option value="236818802">Personal Account #8802/084-737 23-681-8802 ($0.00)</option> 
</select> 
+0

вам нужно использовать '.selectByText ("обеспечить здесь желание текст")' .. –

ответ

0

Я хотел бы посмотреть через fromAccount SELECTOPTION с, пока я не нашел личный кабинет и магазин, номер счета. Теперь просмотрите файл toAccount SELECTOPTION s до тех пор, пока я не найду личную учетную запись, номер счета которой не совпадает с номером fromAccount и сохранит это число. Теперь у вас есть две уникальные личные аккаунты fromAccount и toAccount.

// set up references to both SELECTs 
Select fromAccount = new Select(driver.findElement(By.id("fromAccount"))); 
Select toAccount = new Select(driver.findElement(By.id("toAccount"))); 

// other misc variables 
String fromAcctNo = ""; 
String toAcctNo = ""; 

// find a personal account in the fromAccount OPTIONS 
List<WebElement> options = fromAccount.getOptions(); 
for (WebElement option : options) 
{ 
    // search for a personal account 
    if (option.getText().contains("Personal")) 
    { 
     // store the account number 
     fromAcctNo = option.getAttribute("value"); 
     break; 
    } 
} 

if (fromAcctNo.equals("")) 
{ 
    // log an error that a personal account was not found in fromAccount 
} 
else 
{ 
    // find a personal account in the toAccount OPTIONS 
    options = toAccount.getOptions(); 
    for (WebElement option : options) 
    { 
     // search for a personal account 
     if (option.getText().contains("Personal")) 
     { 
      // find an account number that isn't the same as the fromAccount 
      if (!option.getAttribute("value").equals(fromAcctNo)) 
      { 
       toAcctNo = option.getAttribute("value"); 
       break; 
      } 
     } 
    } 
} 

if (fromAcctNo.equals("")) 
{ 
    // log an error that a personal account was not found in toAccount 
} 
System.out.println("fromAccountNo: " + fromAcctNo); 
System.out.println("toAccountNo: " + toAcctNo); 
+0

Спасибо Джефф, это сработало. Наконец, я добавил fromAccount.SelectByValue (fromAcctNo), чтобы выбрать учетную запись. –

0
List<WebElement> dropDownList = driver.findElement(By.xpath("//select[@name='toAccount']")).findElements(By.tagName("option")); 

for(int i = 1 ; i < dropDownList.count ; i++) 
{ 

new Select 
(driver.findElement(By.xpath("//select[@name='toAccount']"))).selectByText(dropDownList[i].text); 

// do stuff 

//Initialize again 
dropDownList = driver.findElement(By.xpath("//select[@name='toAccount']")).findElements(By.tagName("option")); 
}