2015-02-10 2 views
0

Я впервые задаю вопросы здесь, и я новичок в Python.Как использовать этот onclick (javascript) в Python

Я устанавливаю механизатор и BeautifulSoup для изменения некоторых форм со страницы.

Теперь я использую br.submit(), чтобы отправить запрос, это не сработает!

Есть ли способ вызвать функцию onclick (javascript)?

Вот код о том, что кнопка отправки данных:

<div class="go_btm w_a1"> 
<p class="gogo"><a href="#" onclick="javascript:checkdata(document.mainform);" onkeypress="checkdata(document.mainform);">search</a></p> 
<p class="gogo"><a href="#" onclick="reset();" onkeypress="reset();">cancel</a></p> 
<br class="CLEAR" /> 
</div> 

UPDATE:

Спасибо за поддержку Селен этот инструмент.

Но у меня есть еще одна проблема. Мой код ниже:

for i in range(len(all_options)): arr.append(all_options[i])
count = 0 for option in arr: print("Value is: %s" % option.get_attribute("value")) if count > 1: option.click() string = u'search' link2 = browser.find_element_by_link_text(string.encode('utf8')) response = link2.click() browser.back() count = count + 1

После того как я вернулся на ту же страницу, он ответил мне:

Traceback (most recent call last): File "C:\Users\pc2\Desktop\TEST.py", line 44, in <module> print("Value is: %s" % option.get_attribute("value")) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 93, in get_attribute resp = self._execute(Command.GET_ELEMENT_ATTRIBUTE, {'name': name}) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 385, in _execute return self._parent.execute(command, params) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 173, in execute self.error_handler.check_response(response) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 166, in check_response raise exception_class(message, screen, stacktrace) StaleElementReferenceException: Message: stale element reference: element is not attached to the page document (Session info: chrome=40.0.2214.111) (Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86_64)

Я могу только нажать выбрать один раз.

Это говорит, что мой вариант в массиве исчез?

Как сохранить переменную (опцию), чтобы нажать следующий цикл?

+0

Единственный разумный способ запуска javascript таким образом - включить браузер (возможно, без головы), например, с Selenium. –

+0

Мне очень жаль. Я здесь впервые. Я пытаюсь понять инструменты –

+0

Вы ничего не сделали, нет причин извиняться! Я просто даю ту же информацию очень кратко в комментарии, как @alexce сделал в своем ответе. –

ответ

1

mechanize не может справиться с JavaScript:

Вместо этого, вы можете автоматизировать реальный браузер через selenium. Пример:

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('myurl') 

link = driver.find_element_by_link_text('search') 
link.click() 
Смежные вопросы