2009-08-17 2 views
3

저는 python (2.6) 및 mechanize (0.1.11)로 웹 테스트 스크립트를 작성하고 있습니다. 나는 이런 식으로 뭔가를하려고하면 기계화에Python 사용하기 "조작 데이터"처럼 기계화

<select name="field1" size="1"> 
    <option value="A" selected>A</option> 
    <option value="B">B</option> 
    <option value="C">C</option> 
    <option value="D">D</option> 
</select> 

, : 내가 함께 일하고 있어요 페이지가이 같은 선택 필드에 HTML 양식을 가지고 그런

browser.form['field1'] = ['E'] 

오류가 발생합니다 : ClientForm.ItemNotFoundError: insufficient items with name 'E'

"Tamper Data"firefox 확장 기능을 사용하여 수동으로이 작업을 수행 할 수 있습니다. 파이썬으로 이것을 수행하고 기계화하는 방법이 있습니까? 나는 어떻게해서 폼이 실제로 내가 제출하기를 원하는 가치를 가지고 있다고 mechanicalize에 납득시킬 수 있습니까?

+0

당신이 준 예제에서는 * 값이 'E'가 아닙니다. – kajaco

+0

그것이 요점입니다. 목록에있는 옵션 중 하나가 아니지만 'E'를 제출하도록 속이기를 원합니다. – phicou

답변

7

ClientForm의 헛소리로 다른 항목을 추가하는 것처럼 속일 수 있습니다. 항목 초기화가 자동으로에 대한 항목의 목록을 업데이트 할 것을

xitem = ClientForm.Item(browser.form.find_control(name="field1"), 
     {'contents':'E', 'value':'E', 'label':'E'}) 

마찬가지로, 라디오 버튼 제어

xitem = ClientForm.Item(browser.form.find_control(name="field2"), 
     {'type':'radio', 'name':'field2', 'value':'X'}) 

참고 : 선별 된 필드에서

,이 같은 뭔가가 작동하는 것 같다 지정된 컨트롤이므로 항목을 제대로 표시하기 만하면됩니다.