Автоматизированный выбор в выпадающем меню, созданном с помощью Javascript. - PullRequest
0 голосов
/ 28 июня 2011

Я пишу скрипт для автоматизации заполнения формы с использованием Selenium RC для Python. В одном из полей ввода есть оценщик опережающего ввода AJAX, который генерирует выпадающий список предложений по мере ввода. Я хотел бы выбрать первый вариант, но, поскольку в динамическом сгенерированном списке нет HTML-представления, я попытался смоделировать нажатие «Enter», симуляцию щелчка мыши из меню и перенести фокус на другой элемент, все которые работают вручную в браузере (и приводят к автосохранению, которое генерирует новую информацию на странице). Тем не менее, когда я запускаю следующий код на сервере Селена, выпадающее меню упорно остается там и нет выбора / автосохранения / обновления не происходит:

    sel.focus('otherelement')
    sel.key_press('element', '\13') # As far as I know, 13 is the keycode for the "Enter" key
    sel.key_press_native('\13') # I also tried 'KeyEvent.VK_ENTER' since that is apparently the keycode for a java.awt.event.KeyEvent 
    sel.click('title')
    sel.mouse_out('element')
    sel.mouse_down_at('element', '10,20')
    sel.mouse_up_at('element', '10,20')

Все они были протестированы по отдельности и вместе, но безрезультатно. У кого-нибудь есть исправления / предложения?

РЕДАКТИРОВАТЬ: Следующее работало для сайта, который я тестировал (решение, вероятно, варьируется от сайта к сайту):

    sel.mouse_down('element')
    sel.mouse_up('element')

1 Ответ

0 голосов
/ 28 июня 2011

Используйте следующий код, который я пробовал на странице Google

    sel = self.selenium
    sel.open("http://www.google.co.in/")
    sel.type_keys("q", "vi")
    time.sleep(2)
    sel.key_down("q", "\\40")
    sel.key_up("q", "\\40")
    sel.key_press("q", "\\13")
...