2015-09-12 3 views
0

Оборудованный небольшими техническими знаниями, я начал реализовывать автоматизацию браузера с использованием Selenium Webdriver в Java. Я также использую POI Apache для чтения данных из файла excel. Я смог достичь желаемого, но есть проблема. То, что я намеревался сделать, это иметь лист excel с одним столбцом и «n» количеством строк, каждая из этих ячеек будет десятизначным числом. Используя selenium Webdriver, я смог войти на веб-сайт, чтобы забрать каждое из этих чисел по одной ячейке за раз из Excel, заполнить форму на веб-сайте и создать желаемый результат. Моя проблема в том, что, когда я выбираю второй номер вместо того, чтобы просто вернуться на домашнюю страницу и повторно ввести номер и повторить задачу, откроется новый браузер, затем войдут в систему и т. Д. Я искал Google, чтобы найти решение этой проблемы, и много раз упоминался Юнит. Что я хотел бы знать, является ли JUnit единственным решением? Поскольку мои знания в Java довольно ограничены, есть ли в Java утилита, которая может помочь мне в достижении этого или любого другого лучшего решения, о котором я могу не знать?Наиболее эффективная реализация повторяющейся автоматизации браузера в том же сеансе

Благодарю вас и простите за длинный пост.

public class test { 
public static void main(String[] args) throws Exception { 

    int[][] data; 
    data = excelRead(); 
    for (int i = 0; i < data.length; i++) { 

     formfill(data[i][0]); 

    } 
public static void formfill(int number) throws Exception { 

    WebDriver wd = new FirefoxDriver(); 
    wd.get("URL"); 
    // wd.get("Login Page")).click(); 
    wd.findElement(By.xpath(xpath)).sendKeys("username"); 
    wd.findElement(By.xpath(xpath)).sendKeys("password"); 
    wd.findElement(By.xpath(xpath)).click(); 

    wd.findElement(By.xpath(xpath)).sendKeys(String.valueOf(number)); 

      Set<String> windowId = wd.getWindowHandles(); 
    Iterator<String> itererator = windowId.iterator(); 
    String mainWinID = itererator.next(); 
    String newAdwinID = itererator.next(); 
    wd.switchTo().window(newAdwinID); 
    wd.switchTo().window(mainWinID); 
    wd.findElement(By.xpath(xpath to go back to homepage again to enter the next number)).click(); 
} 
public static int[][] excelRead() throws Exception { 
    File excel = new File("C:\\testing.xls"); 
    FileInputStream fis = new FileInputStream(excel); 
    HSSFWorkbook wb = new HSSFWorkbook(fis); 
    HSSFSheet ws = wb.getSheet("Sheet1"); 
    int rowNum = ws.getLastRowNum()+1; 
    int colNum = ws.getRow(0).getLastCellNum(); 
    int[][] data = new int[rowNum][colNum]; 

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

     HSSFRow row = ws.getRow(i); 

     for (int j = 0; j < colNum; j++) { 
      HSSFCell cell = row.getCell(j); 
      int value = cellToString(cell); 
      data[i][j] = value; 
     } 
    } 
    return data; 
} 
public static int cellToString(HSSFCell cell) { 

    int type; 
    Object result; 

    type = cell.getCellType(); 
    switch (type) { 
    case 0: // numeric value in excel 
     result = cell.getNumericCellValue(); 
     break; 
    case 1: // String value in excel 
     result = cell.getStringCellValue(); 
     break; 
    default: 
     throw new RuntimeException("There are no support for this type of cell"); 
    } 
    double z = (double) result; 
    int y = (int) z; 
    return y; 
} 

}

+0

Вы должны показать им портативные части вашего кода. – PeterMmm

+0

Возможно, вы создаете новый объект «WebDriver» для каждой задачи, чтобы использовать тот же экземпляр браузера, с которого вы можете вернуться на домашнюю страницу, используя [get (...)] (http: //selenium.googlecode. com/git/docs/api/java/org/openqa/selenium/WebDriver.html # get-java.lang.String-). – Titus

+0

Я добавил важные части кода – user3777207

ответ

1

Вы создаете новый экземпляр FireFox браузера каждый раз, когда вызывается метод formfill(...), что из-за этой линии:

WebDriver wd = new FirefoxDriver(); 

для повторного использования одного экземпляра браузера, вы можете создать только один экземпляр FirefoxDriver, например:

public class test { 
    WebDriver wd = new FirefoxDriver(); 
    ...... 
    public static void formfill(int number) throws Exception { 
     wd.get(...); 
    } 
} 
+0

Предполагая, что для работы он все равно заставит меня перейти на страницу входа, введите имя пользователя и пароль и нажмите логин для каждого номера. Я пытался подумать о решении, когда я вхожу один раз и заполняю форму снова и снова, используя разные цифры. – user3777207

+0

@ user3777207 Вы можете разделить этот процесс на 2 метода. Один для входа, а другой для отправки формы. Идея состоит в том, чтобы повторно использовать объект WebDriver, чтобы вы не открывали новый экземпляр браузера. – Titus

+0

Спасибо Titus .., который сработал для меня – user3777207

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