Как я могу последовательно удалить текст по умолчанию из элемента ввода с помощью Selenium?

Я пытаюсь использовать Selenium WebDriver для ввода текста в элемент ввода GWT с текстом по умолчанию «Введите идентификатор пользователя». Вот несколько способов, которыми я пытался заставить это работать:

        searchField.click();
        if(!searchField.getAttribute("value").isEmpty()) {
            // clear field, if not already empty 
            searchField.clear();
        }
        if(!searchField.getAttribute("value").isEmpty()) {
            // if it still didn't clear, click away and click back
            externalLinksHeader.click();
            searchField.click();
        }

        searchField.sendKeys(username);

Странно то, что вышесказанное работает только иногда. Иногда это заканчивается поиском «Введите идентификатор пользователя», в основном начиная вводить «имя пользователя» после текста по умолчанию --и даже не заканчивая это.

Есть ли другие лучшие и более надежные способы удаления текста по умолчанию из элемента GWT?

Отредактировано для добавления:HTML элемента ввода. К сожалению, из-за популярности JS/GWT здесь особо не на что смотреть. Вот поле, когда оно не выбрано:

<input type="text" class="gwt-TextBox empty" maxlength="40">

После того, как я щелкнул по нему и сфокусировал его вручную, текст по умолчанию и «пустой» класс удаляются.

JS для setDefaultText()вызывается как onBlur(), так и onChange(), если изменение приводит к пустому текстовому полю. Думаю, поэтому searchField.clear()не помогает.

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

11
задан mcole 28 June 2012 в 21:29
поделиться