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

ekulgavaya

Регистрация: 12 окт 2010
Offline Активность: 11 фев 2015 08:28
-----

#92632 Тест проходит успешно, но описанные действия для страницы не выполняют

Написано ekulgavaya 15 августа 2011 - 12:59

на Java это выглядит примерно так

public void waitForElement(java.lang.String elementName) throws InterruptedException {
        for (int second = 0; ; second++) {
            if (second >= 30) fail(" Element \"" + elementName + "\" isn't present");
            try {
                if (selenium.isElementPresent(elementName)) break;
            } catch (Exception e) {
            }
            Thread.sleep(1000);
        }
    }

Я бы рекомендовала несколько переопределить этот метод, поскольку ожидание указанных здесь 30-ти секунд может по факту занять несколько минут ( к примеру в ИЕ, с локаторами на Xpath.) Например вот так

	public void waitForElementPresent(String locator, int time) throws InterruptedException{
		long start = System.currentTimeMillis();
		while (System.currentTimeMillis() < start + time) {
			if ((selenium.isElementPresent(locator)))
				return;
			Thread.sleep(1000);
		}
		throw new AssertionError("The element " + locator + " still isn't present");
	}
Такой метод позволит вам контролировать время выполнения теста, поскольку ждать элемента вы будете ровно столько, сколько укажете в параметре time.
  • 1


#92602 Тест проходит успешно, но описанные действия для страницы не выполняют

Написано ekulgavaya 15 августа 2011 - 08:05

Может конечно глупый вопрос, но вы точно дожидаетесь появления этих кнопок?
Ведь они априори есть на странице, и isElementPresent всегда вернет true. Но судя по всему после нажатия кнопки Next у вас идет обработка ajax запроса.
Попробуйте сначала поставить банальную паузу, и если это сработает продумать, как именно дождаться кнопки. (Возможно, как говорил Vitalik_V , дождаться например свойства Visible=true.)
  • 1


#92551 Тест проходит успешно, но описанные действия для страницы не выполняют

Написано ekulgavaya 12 августа 2011 - 15:21

Подозреваю, что все кнопки Next имеют одинаковы айди, а поскольку страница не перезагружается, то элементы просто перекрываются друг другом визуально. Селениум естественно такое не видит, поэтому жмет на первую кнопку. То есть кнопка Next продолжает нажиматься на первом табе. Попробуйте в локаторе указать таб, на котором лежит кнопка. Примерно вот так:
"//div[@id='tabStep2']//a[@id='btnNext']"
или
"//div[@id='tabStep2']//input[@id='btnNext']"
Хотя подозреваю, что кнопка все-таки это тег <a>
  • 1


#92480 элементы с одинаковыми характеристиками

Написано ekulgavaya 11 августа 2011 - 11:13

Вот более общий кусок кода. такого хватит?


Это немножко не то) Но исходя из этого кода можно сделать следующее
1) нумерацию (То самое i) привязывать вот к этому элементу
<div class="x-grid3-row ux-maximgb-tg-level-1   " style="width: 658px; ">
То есть локатор будет содержать следующее
div[contains(@class, 'ux-maximgb-tg-level-1')]
вместо ux-maximgb-tg-level-1 можно вставить только ту часть, которой этот класс отличается от остальных
2) Нужно будет каким-то образом указать элемент (общий, про который говорилось выше), где лежат эти div-ы ( пусть это будет
<div name = "personal-info-table" > </div>
) Поищите сами на страничке. Таким образом у нас уже имеется
"//div[@name='personal-info-table'] // div[contains(@class, 'ux-maximgb-tg-level-1')][i]"
3)Теперь можно из каждого такого div-a выбрать нужный инпут:
"//div[@name='personal-info-table'] // div[contains(@class, 'ux-maximgb-tg-level-1')][i]//input[@name='myfile']"


Надеюсь, что помогла вам
  • 1