Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2013 16:15:35

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

Теперь появилась новая проблема
Захожу на сайт с ява скриптом:

<html>
<body>
<select name="CATEGORY" tabindex="2">
<option value=""></option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
^^^Это выпадающий список.^^^
В этом списке надо выбрать одну из категорий.
Если пользуюсь:
g.set_input_by_xpath("//option[@value=""]","1")
Так же пробовал:
g.set_input_by_xpath("//html/body/select/option[@value=""]","1")
Выдает: XPathEvalError: Invalid expression
Если использую:
g.set_input("CATEGORY","1")
Выдает: ValueError: There is no option with the value of ‘1’

Что-то я опятьснова делаю не так.

Офлайн

#2 Окт. 1, 2013 19:00:47

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

У вас не хватает обрамляющего тэга FORM.



Офлайн

#3 Окт. 1, 2013 19:05:58

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Заполнение форм mechanize, twill, grab.

> Выдает: ValueError: There is no option with the value of ‘1’
Можеть быть, потому что опции селекта рисуются через js

Вы можеет так сделать:

g.go(''page with form")
g.submit(make_request=False) # эта строчка настроит g.config['post'] полями формы, например, hidden-полями
g.config['post']['CATEGORY'] = '1'
g.go('action url формы')

Офлайн

#4 Окт. 1, 2013 20:54:11

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

Lexander
У вас не хватает обрамляющего тэга FORM.
g.set_input_by_xpath("//html/body/form/select/option“,”1")
Я правильно вас понял? Такая же ошибка.

lorien
> Выдает: ValueError: There is no option with the value of ‘1’Можеть быть, потому что опции селекта рисуются через js
Вы можеет так сделать:
Выдает: list indices must be integers, not str.
Почитаю о работе с postами

Офлайн

#5 Окт. 1, 2013 21:17:26

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

noob_saibot
Я имел ввиду в html, а не в xpath.



Офлайн

#6 Окт. 2, 2013 06:08:02

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

noob_saibot, я делаю так:

g.set_input("CATEGORY", '1')
# Если граб не нашел такое поле, то добавляю вручную:
g.submit(extra_post={"CATEGORY":"1"})



Офлайн

#7 Окт. 2, 2013 09:31:34

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

plusplus
noob_saibot, я делаю так:
Спасибо огромное!!!)
А если в выпадающем списке добавляется optgroup то имя селекта, я так понимаю, станет составным?

Офлайн

#8 Окт. 5, 2013 09:00:54

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Заполнение форм mechanize, twill, grab.

Всем спасибо за помощь, после добавления в программу:

g.submit(extra_post={"CATEGORY":"1"})
Все заработало как по маслу))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version