2011-09-24 24 views
6

Tôi thực sự bối rối. Tôi về cơ bản đang cố gắng điền vào một mẫu trên một trang web với cơ giới hóa cho python. Tôi có mọi thứ để làm việc ngoại trừ menu thả xuống. Tôi sử dụng cái gì để chọn nó và tôi phải đặt cái gì cho giá trị? Tôi không biết liệu tôi có nên đặt tên của lựa chọn hay giá trị số của nó hay không. Trợ giúp sẽ được đánh giá cao, cảm ơn.Làm thế nào để chọn một mục cho trình đơn thả xuống với cơ giới hóa trong python?

Đoạn mã:

try: 
     br.open("http://www.website.com/") 
     try: 
      br.select_form(nr=0) 
      br['number'] = "mynumber" 
      br['from'] = "[email protected]" 
      br['subject'] = "Yellow" 
      br['carrier'] = "203" 
      br['message'] = "Hello, World!" 
      response = br.submit() 
     except: 
      pass 
    except: 
     print "Couldn't connect!" 
     quit 

Tôi đang gặp rắc rối với người vận chuyển, mà là một trình đơn thả xuống.

+0

Vui lòng đưa ra ví dụ cụ thể. Hiển thị mã bạn đã thử và điều gì đã xảy ra khi bạn thử? – infrared

+0

Ok, hãy đăng nó ngay bây giờ – user962889

+0

Có thể bạn sẽ nhận được câu trả lời tốt hơn nếu bạn viết lại tiêu đề câu hỏi của mình để tóm tắt vấn đề thay vì danh sách các thẻ (danh sách thẻ ở đây chỉ dành cho điều đó). Và không cần phải nói "Xin hãy giúp!", Vì nếu bạn đang đặt câu hỏi, rõ ràng bạn đang yêu cầu giúp đỡ. –

Trả lời

3

Theo số mechanize documentation examples, bạn cần phải truy cập các thuộc tính của đối tượng form, không phải đối tượng browser. Ngoài ra, đối sự kiểm soát lựa chọn, bạn cần phải thiết lập các giá trị cho một danh sách:

br.open("http://www.website.com/") 
br.select_form(nr=0) 
form = br.form 
form['number'] = "mynumber" 
form['from'] = "[email protected]" 
form['subject'] = "Yellow" 
form['carrier'] = ["203"] 
form['message'] = "Hello, World!" 
response = br.submit() 
+0

Tôi không chắc liệu bạn có trả lời hay không, bởi vì tôi đã hỏi điều này ngày hôm qua, nhưng đối với "nhà cung cấp dịch vụ", tôi có thể đặt giá trị cho tên của những gì trong danh sách thả xuống hay giá trị không? ví dụ: Tên: Foo Giá trị: 129 – user962889

+0

Bạn có thể đăng html của biểu mẫu được đề cập đến không, vì vậy tôi có thể kiểm tra nó đúng cách và trả lời? – infrared

2

Xin lỗi vì làm sống lại một bài đăng đã chết từ lâu, nhưng đây là câu trả lời vẫn tốt nhất mà tôi có thể tìm thấy trên google và nó không công việc. Sau nhiều thời gian hơn tôi quan tâm, tôi đã tìm ra. hồng ngoại là đúng về các đối tượng hình thức, nhưng không phải về phần còn lại, và mã của ông không hoạt động. Dưới đây là một số mã hoạt động cho tôi (mặc dù tôi chắc chắn có giải pháp thanh lịch hơn):

# Select the form 
br.open("http://www.website.com/") 
br.select_form(nr=0) # you might need to change the 0 depending on the website 

# find the carrier drop down menu 
control = br.form.find_control("carrier")  

# loop through items to find the match 
for item in control.items: 
    if item.name == "203": 

    # it matches, so select it 
    item.selected = True 

    # now fill out the rest of the form and submit 
    br.form['number'] = "mynumber" 
    br.form['from'] = "[email protected]" 
    br.form['subject'] = "Yellow" 
    br.form['message'] = "Hello, World!" 
    response = br.submit() 

    # exit the loop 
    break 
+0

Bạn có thể thực hiện control.disabled = False control.value = ["203"] thay vì looping. Cho tôi biết – Lazik

Các vấn đề liên quan