Обработка всплывающих окон браузера с Селеном

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
20
задан Martin Broadhurst 11 February 2015 в 00:03
поделиться

5 ответов

Это работает!! Только для помощи людям, которые предпочитают selenese.

Это работало на меня использующий IE7 (нормальный режим).

, Что долбаная стычка. Благодарите монстра спагетти в небе для ТАК или нет никакого способа, которым у меня была бы эта работа в IE.

<tr>
    <td>getEval</td>
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>buttonName</td>
    <td></td>
</tr>
<tr>
    <td>windowFocus</td>
    <td>windowName</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td>windowName</td>
    <td>3000</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>windowName</td>
    <td></td>
</tr>
3
ответ дан 30 November 2019 в 01:37
поделиться

Если Вы работаете в *iehta режим затем, Вы собираетесь столкнуться с некоторыми незначительными сбоями тут и там. Мы выполняем Селен в моем задании и туда, кажется, много проблем с IE и Ajax.

Однако это походит на проблему, с которой Вы сталкиваетесь, тот, где Селен пытается получить доступ к компоненту в другом окне, прежде чем это полностью загрузится. Я не уверен, на что установлен Ваш диапазон тайм-аута по умолчанию, но можно хотеть попытаться увеличить его приблизительно до 60 секунд (на 60 000 мс) для заканчивания проблемы.

, Кроме которого я предложил бы запустить Ваши тесты в Firefox (использующий *хром), поскольку он приводит к намного более надежным результатам, но иногда это просто не возможно из-за бизнес-требований.

1
ответ дан 30 November 2019 в 01:37
поделиться

Я просто испытал добавление другой функции селена, windowFocus():

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().windowFocus("enquiryPopup");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

тест, за которым следуют, когда я работал, это локально, но только со всеми теми вызовами метода - создает/фокусирует/ожидает/выбирает.

я собираюсь позволить серверу сборки запустить все тесты, и если это успешно выполнится также, то я буду делать библиотечную функцию из него...!

0
ответ дан 30 November 2019 в 01:37
поделиться

Попытайтесь добавить, что некоторые ожидают операторы вокруг вызовов, которые вызывают Вас проблемы.

у меня были те же ошибки прежде и единственный способ, которым я смог к надежно , разрешают их, был путем совершения вызовов к Системе. Поточная обработка. Поток. Сон (5000)..

-1
ответ дан 30 November 2019 в 01:37
поделиться

Мне нужно было выбрать iframe во всплывающем окне и заполнить форму. У меня возникли проблемы с использованием cmd selectWindow, где selenium не смог найти мой iframe, поэтому я удалил команду.

Этот selenese сработал для меня (где заголовок iframe и id = account_frame):

<tr>
  <td>click</td>
  <td>//a[@class='item_add']</td>
  <td></td>
</tr>
<tr>
  <td>windowFocus</td>
  <td>account_frame</td>
  <td></td>
</tr>
<tr>
  <td>waitForPopUp</td>
  <td>account_frame</td>
  <td>10000</td>
</tr>
0
ответ дан 30 November 2019 в 01:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: