Перейти к содержимому

Фотография

Генерирую рандомный номер для xpath элемента


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 egorza

egorza

    Новый участник

  • Members
  • Pip
  • 26 сообщений
  • ФИО:Замараев Егор


Отправлено 16 февраля 2012 - 08:09

Добрый день.
Возникла проблема с рандомными числами. Не получается понять причину. Задача: есть несколько элементов option для одного селекта. Проверял, по xpath можно к ним обратиться //option[1], //option[2] итд. Элемент на странице получается уникальным.
Сделал 2 метода для рандомного выбора элемента:
public int Random(int start, int end)
	{
		
	 return start + (int)(Math.round((Math.random()*(end-start))));
	}
	
	public String performanceTypeId()
	{
		return "//option["+Random(1,2)+"]";
	}

И когда доходит дело до клика по этому элементу (метод для клика),

public void clickItem(WebDriver driver,String param, String errorText, int time) throws InterruptedException
	{
	
		 for (int second = 0;; second++)
			{
				if (second >= 50) Assert.fail(errorText);
				{	
					element = driver.findElement(By.xpath(param));
					try
					{	
						if (element.isDisplayed())
						{	
							
							builder = new Actions(driver);
							builder.moveToElement(driver.findElement(By.xpath(param))).build().perform();
							element.click();
							break;
						}
					}
					catch (Exception e)
					{}
				}
				Thread.sleep(time);
			}
		
	}
падает Java SE. Генератор сам отрабатывает, //option[1], //option[2] генерятся рандомно.
Подсажите пожалуйста профессионалы, так как моих новичковских знаний явно нехватает..
  • 0

#2 Skuayer

Skuayer

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Жуков Анатолий Викторович
  • Город:Санкт-Петербург

Отправлено 16 февраля 2012 - 08:50

попробуйте
public int random(int start, int end)
        {
return start + new Random().nextInt(end-start);
}

  • 0

#3 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 16 февраля 2012 - 08:51

public void clickItem(WebDriver driver,String param, String errorText, int time) throws InterruptedException
        {
        
                 for (int second = 0;; second++)
                        {
                                if (second >= 50) Assert.fail(errorText);
                                {       
                                        element = driver.findElement(By.xpath(param));
                                        try
                                        {       
                                                if (element.isDisplayed())
                                                {       
                                                        
                                                        builder = new Actions(driver);
                                                        builder.moveToElement(driver.findElement(By.xpath(param))).build().perform();
                                                        element.click();
                                                        break;
                                                }
                                        }
                                        catch (Exception e)
                                        {}
                                }
                                Thread.sleep(time);
                        }
                
        }

А зачем юзать такой тяжеловесный метод??
Вот так нуна это делать
  • 0

#4 egorza

egorza

    Новый участник

  • Members
  • Pip
  • 26 сообщений
  • ФИО:Замараев Егор


Отправлено 16 февраля 2012 - 12:00

А зачем юзать такой тяжеловесный метод??
Вот так нуна это делать


Спасибо большое!!!!
Сделал по примерам. Рандомный выбор из выпадающего меню:
public void chooseRandomOption(WebDriver driver, String param)
		{
			 WebElement element = driver.findElement(By.xpath(param));
			
			// Then instantiate the Select class with that WebElement
			Select select = new Select(element);
			
			// Get a list of the options
			List<WebElement> options = select.getOptions();
			int maxRandom = options.size()-1; 
			WebElement we = options.get(Random(0,maxRandom));
			we.click();
		}

Универсально и работает=) и второй метод сделал с указанием нужного элемента=) ну теперь то дело пойдет=)
Спасибо!!
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных