Как нажать кнопку с зависимой фиксацией и выбрать следующую страницу, используя Python (urllib2)[WebScrape, селен] - PullRequest
1 голос
/ 15 июля 2010

Я борюсь с этим.У меня есть полностью протестированный скрипт Python.Я должен сделать небольшое изменение, в котором я должен сначала щелкнуть переключатель, который, в свою очередь, автоматически выполняет функцию JavaScript, перенаправляя страницу в форму поиска.

Моя рабочая платформа: Linux

Язык: Python

Код переключателя:

<input type="radio" language="javascript" onclick="javascript:setTimeout('__doPostBack(\'_ctl0$Main$SearchRadio\',\'\')', 0)" value="SearchRadio" name="_ctl0:Main:SearchRadio" id="_ctl0_Main_SearchRadio">

Код Javascript на странице:

<script type="text/javascript">
<!--
var theForm = document.forms['aspnetForm'];
  if (!theForm) {
    theForm = document.aspnetForm;
}
  function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
  // -->
</script>

Это то, что делает селен.Не уверен, поможет ли это вообще.

 def test_untitled(self):
        sel = self.selenium
        sel.open("/Search/results.aspx")
        sel.click("_ctl0_Main_SearchRadio")
        sel.wait_for_page_to_load("30000")
        sel.type("-InputTextField", "ThinkCode")
        sel.click("_SearchMainUser")
        sel.wait_for_page_to_load("30000")
        try: self.failUnless(sel.is_text_present("ThinkCode"))
        except AssertionError, e: self.verificationErrors.append(str(e))

Все, что я пытаюсь сделать, - это перейти на получившуюся страницу, на которую мы перенаправляемся, как только мы нажимаем переключатель.Я читал об ужасах javascript в просмотре веб-страниц на python с использованием urllib2.Надеюсь, добрый питонист поможет мне в ближайшее время:)

1 Ответ

0 голосов
/ 12 апреля 2011

Вместо того, чтобы пытаться автоматизировать нажатие кнопки JavaScript, что сложно в Python, попробуйте отслеживать, какой запрос отправляется, а затем повторить это.В этом вам помогут различные расширения Firefox, например TamperData , Firebug и LiveHttp .

...