Selenium Python sel.click ("css = input.smthg")? - PullRequest
0 голосов
/ 03 ноября 2011

Я пишу скрипт на Python для Selenium, но действие «sel.click» не работает, когда выделение является CSS:

def test_test_remote(self):
    sel = self.selenium
    sel.open("/fr")
    sel.click("id=flightFrom")
    sel.type("id=flightFrom", "Londres-Stansted")
    sel.type("id=flightTo", "Dublin")
    sel.click("id=termsAccept")
    sel.click("css=input.bookFlightButton") ----> nothing happens
    sel.wait_for_page_to_load("30000")

У кого-нибудь есть идея?

С уважением.

Винсент

1 Ответ

0 голосов
/ 03 ноября 2011

Это, скорее всего, вызвано закулисным кодом Javascript. Вероятно, когда вы перемещаетесь по веб-сайту с помощью браузера, вы можете просто щелкнуть элемент, и все работает как положено. Скажем, что input.bookFlightButton на самом деле обрабатывает запрос на отправку на его обработчике mouseup, например: ваша команда click может не сработать.

Я бы попробовал две вещи. Сначала проверьте, не можете ли вы отправить форму с помощью команды Selenium Submit Form. Если повезет, это даст вам желаемый результат.

Во-вторых, вам придется немного совать Javascript. Если на сайте используется jQuery, запустите командное окно в вашем браузере (по умолчанию в Chrome; для Firefox вам нужен Firebug, IE ... не знаю). Затем попробуйте переключить отправку формы с помощью jQuery:

$('input.bookFlightButton').click()
$('input.bookFlightButton').mouseup()

Когда вы нашли работающий вызов, замените sel.click на этой кнопке чем-то вроде следующего:

sel.get_eval("window.jQuery('input.bookFlightButton').mouseup()")

... чтобы переключить его из Selenium.

...