2014-12-22 3 views
0

Как написать цикл для этого идентификатора повторяетСпараметрировать Петлю селеном WebDriver

driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl03_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl04_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl04_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl05_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl05_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl06_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl06_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl07_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl07_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl08_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl08_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl09_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl09_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl10_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl10_TxtDescrp")).sendKeys("[email protected]"); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl11_selectchk")).click(); 
driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl11_TxtDescrp")).sendKeys("[email protected]") 
+0

На каком языке вы используете Selenium Webdriver? – jaynp

ответ

0

Предполагая, что вы должны нажать от 3 до 11: попробовать с:

WebElement web = null; 
for(int i = 3; i <= 11; i++){ 
    web = driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl0"+i+"_TxtDescrp"); 
    web.click(); 
    web.sendKeys("[email protected]"); 
} 

Но было бы лучше, если бы вы предоставили свой html, чтобы мы могли предоставить более оптимизированный код. И если вы имеете все под теми же тегами вы можете создать XPath как

//<tag>[contains(@id,'ctl00_ContentPlaceHolder1_Wizard')] 

и получить все webElements используя метод findElements, а затем использовать

foreach(WebElement web : list){ 
    web.click(); 
    web.sendKeys("[email protected]"); 
} 

Исправление: на основе коррекции при условии by Shoaib, я бы предпочел:

List<WebElement> lstEle = driver.findElements(By.xpath(".//*[@id[contains(.,'ctl00_ContentPlaceHolder1_Wizard')]]")); 
foreach(WebElement webEle : lstEle){ 
    if(webEle.getAttribute("id").contains("selectchk")) 
     webEle.click; 
    else 
     webEle.sendKeys("[email protected]"); 
} 
1

Предполагая, что цикл составляет от 3 до 11 и вы первый нажмите на каждый элемент и отправить текст после этого ниже код будет работать для вас:

WebElement eleSend = null; 
    WebElement eleClick = null; 
    String Locator_StartUpto9 = "ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl0"; 
    String Locator_StartAfter9 = "ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl"; 
    String Locator_SendKeys_End = "_TxtDescrp"; 
    String Locator_Click_End = "_selectchk"; 
    String Locator_SendKeys = null; 
    String Locator_Click = null; 

    for(int i = 3; i <= 11; i++){ 
     if(i<=9){ 
      Locator_SendKeys = Locator_StartUpto9 + i + Locator_SendKeys_End; 
      Locator_Click = Locator_StartUpto9 + i + Locator_Click_End; 
     }else{ 
      Locator_SendKeys = Locator_StartAfter9 + i + Locator_SendKeys_End; 
      Locator_Click = Locator_StartAfter9 + i + Locator_Click_End; 
     } 

     eleSend = driver.findElement(By.id(Locator_SendKeys)); 
     eleClick = driver.findElement(By.id(Locator_Click)); 

     eleClick.click(); 
     eleSend.sendKeys("[email protected]"); 
    } 
0

Поправка к коду Вивека в

WebElement web = null; 
for(int i = 3; i <= 11; i++) 
{ 
    webTextBox = driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl0"+i+"_TxtDescrp"); 
    webTextBox .sendKeys("[email protected]"); 

    webCheckBox = driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl0"+i+"_selectchk"); 
    webCheckBox .click(); 
} 

идентификатора шаблон для текстового поля, как ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl11_TxtDescrp & для флажка (я думаю, ее галочку) его как ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl11_selectchk

Единственного изменение часть является числовым значением ctl11 & selectchk/TxtDescrp поэтому одна петли для диапазона 3-11 вместе с отдельной webElement для флажка & текстового поля потребуется, как показано в коде выше.

Надеюсь, ответ поможет. , , ура !!

+0

О, я не заметил эту вещь ... спасибо, что исправил меня ... –

0

Я написал следующий метод, который повторяет ваш точный вопрос.

public static enterVal(int start, int end) { 

    for (int i=start; i<=end;i++) {  
     String first = i; 
     if (i<10) { 
      first = "0"+first; 
     } 

     String next = i+1; 
     if ((i+1)<10) { 
      next = "0"+next; 
     } 
     driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl"+first+"_TxtDescrp")).sendKeys("[email protected]"); 
     if (i==end) { 
      break; 
     } 

     driver.findElement(By.id("ctl00_ContentPlaceHolder1_Wizard_cgConnectionStatistics_ctl"+next+"_selectchk")).click(); 
    } 
} 

Надеюсь, это вам поможет.

0

В ответах на этот вопрос много «изобретать колесо».

Лучший способ сделать это - использовать возможности параметризации Junit или TestNG. Я предпочитаю TestNG, поскольку DataProvider прост в использовании. Вы можете создать один тестовый метод, который заполняет поле и нажимает. Затем ваш dataprovider может подавать гигантский список аргументов в этот метод тестирования. То, что у вас получается, - это хороший отчет каждого отдельного теста с pass/fail для каждого из них.

Адрес a nice example.

Смежные вопросы