1

このWebフォームに自動的に入力するために、いくつかのコードを記述しようとしています:

http://scoweb.sco.ca.gov/UCP/

次に、返された結果を読み取ります。自分の名前を探して、UCP になったら自分に通知します。

C# (System.Net)、curl (formfind と組み合わせて)、Ruby (Mechanize)、および Python (Scrapy、urllib2) でプログラムを作成してみました。私のスクリプトはすべて、データベースと通信する通常の HTML フォームで動作しますが、これは何も返しません。

私の理論は、サイトが ASP を使用しているためであり、それを説明するために何かをしていないのでしょうか?

Python が優先されますが、フォームに入力して結果を返す作業コードは大歓迎です。

4

2 に答える 2

0
#!/usr/bin/env python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class Shiply(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "http://scoweb.sco.ca.gov/"  #California UCP
        self.verificationErrors = []

    def test_shiply(self):
        driver = self.driver
        driver.get(self.base_url + "/UCP/")
        driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtLastName").clear()
        driver.find_element_by_id("ctl00_ContentPlaceHolder1_txtLastName").send_keys("YOUR_NAME")
        driver.find_element_by_id("ctl00_ContentPlaceHolder1_btnSearch").click()

    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
于 2012-10-27T10:45:31.947 に答える
0

フォームがjavascriptを使用しているため、問題があると思います。あなたはそのようなことにセレンを使うことができますhttp://seleniumhq.org/

于 2012-10-26T22:28:16.887 に答える