Авторизуйтесь на веб-сайте с помощью инструмента очистки веб-страниц в Python. - PullRequest
7 голосов
/ 29 ноября 2011

Я использую Selenium webdriver в Python для проекта очистки веб-страниц.

Я хотел бы войти в систему, введя данные для входа, а затем нажать кнопку отправки.

Я могувведите имя пользователя и пароль.Но я не могу щелкнуть мышью по кнопке отправки.

Кнопка «отправить» имеет тип <input>.

<input type="image" src="/images/buttons/loginnow.gif" tabindex="3">

Вот код Python, в котором я пытаюсь щелкнуть мышью.

submitButton=driver.find_element_by_xpath("//input[@type='image'][@src='/images/buttons/loginnow.gif']")
driver.click(submitButton)

Я получаю следующую ошибку:

AttributeError: 'WebDriver 'объект не имеет атрибута' click '

Любая идея, как это исправить или любое другое альтернативное решение для входа на сайт в Python.

Спасибо

Ответы [ 2 ]

9 голосов
/ 29 ноября 2011

Мне повезло, используя mechanize. Это довольно просто и просто в использовании.

Вот урезанная версия скрипта, который я сделал:

from BeautifulSoup import BeautifulSoup
from tidylib import tidy_document

import mechanize
import cookielib

if __name__ == '__main__':
  browser = mechanize.Browser()

  cookiejar = cookielib.LWPCookieJar()
  browser.set_cookiejar(cookiejar)

  browser.set_handle_equiv(True)
  browser.set_handle_redirect(True)
  browser.set_handle_referer(True)
  browser.set_handle_robots(False)

  browser.open('https://www.example.com/')

  browser.select_form(name = 'loginform')
  browser['username'] = 'foo'
  browser['password'] = 'bar'

  browser.submit()

  browser.open(browser.click_link(text = 'Link text'))

  soup = BeautifulSoup(tidy_document(browser.response().read())[0])

Вам не нужно нажимать на изображение, правда. Вам просто нужно заполнить все необходимые данные формы и просто submit().

Кроме того, если вы ничего не будете анализировать, просто избавьтесь от зависимостей BeautifulSoup и tidylib.

4 голосов
/ 29 ноября 2011

Вам нужно вызывать функцию щелчка элемента, а не драйвера.

submitButton=driver.find_element_by_xpath("//input[@type='image'][@src='/images/buttons/loginnow.gif']")
submitButton.click()
...