2012-07-27 1 views
1

저는 mechanize를 사용하여 폼을 처리하고 있습니다.레일에서 mechanize를 사용하는 클래스의 인스턴스를 삭제합니다.

{forms 
#<Mechanize::Form 
{name nil} 
{method "POST"} 
{action "/dashboard/checks/50114dbeae6f61b428000ad8"} 
{fields 
    [hidden:0x60c476a type: hidden name: _method value: put] 
    [text:0x60c4616 type: text name: check[name] value: Testing] 
    [text:0x60c4512 type: text name: check[url] value: http://www.pintile.com] 
    [text:0x60c445e type: text name: check[interval] value: 120] 
    [text:0x60c435a type: text name: check[maxTime] value: 1500] 
    [textarea:0x60c4116 type: name: check[tags] value: ]} 
{radiobuttons} 
{checkboxes} 
{file_uploads} 
{buttons 
    [button:0x60c3d88 type: submit name: value: ] 
    [button:0x60c3d24 type: submit name: delete value: ] 

이 양식 변경 사항 저장 (1), (2)를 삭제 2 개 버튼, 내가 사용하는 있습니다 다음과 같이 나는 기계화 사용하여 양식을 구문 분석하고 출력은 온다 다음 코드는 변경 내용을 저장하고 제대로 작동합니다.

form.field_with(:name => "check[name]").value = "Testing" 
button = form.buttons.first 
agent.submit(form, button) 

변경 내용이 성공적으로 저장됩니다. 하지만 아래 코드를 사용하여 삭제하려고하면 작동하지 않습니다.

button = form.buttons.first 
agent.submit(form, button) 

아무 것도하지 않습니다. 이 문제를 해결하려면 저를 도우십시오.

답변

0

웹 사이트가 일반적인 레일 양식 인 경우 삭제 단추는 JavaScript 동작 일 가능성이 큽니다. Mechanize는 JavaScript를 지원하지 않습니다. 대신 웹킷 드라이버와 함께 capybara와 같은 것을 사용할 수 있습니다.이 키트는 완전한 JavaScript 지원과 이미 기계화에 포함 된 모든 기능을 갖추고 있습니다. 당신이 카피 바라가

+0

안녕하세요 Tanzeeb, 정말 감사드립니다. 당신이 맞습니다 ** 삭제 ** 버튼은 자바 스크립트 작업입니다. 이제 그 자바 스크립트 함수를 트리거하고 싶습니다. 나는 [link] (https://github.com/thoughtbot/capybara-webkit)를 찾았지만 이것은 테스트 용이다. 제발 좀 더 제발. –

+0

다음은 시작하기 좋은 예입니다. http://www.chadcf.com/blog/using-capybara-javascript-capable-replacement-mechanize –

0

잘 link.Have와 작업 아래의 코드는 당신이 그렇지 ..

agent.get("http://your url") 

agent.page.link_with(:text => "link name").click 

그것을 시도 줄을 클릭했습니다. 따라서 당신이 원하는 :

button = form.buttons.last 
agent.submit(form, button) 

이상 단순히 :

form.submit form.buttons.last 
+0

문제는 링크가 아니므로 클릭이 작동하지 않습니다. 자바 스크립트 함수에 의해 트리거됩니다. –

0

삭제 사용할 수 있습니다 위에서 언급 한 마지막 단추와 같이

0

기계화 당신을 위해 충분하고 카피 바라를 가져다 줄 어떤 자바 스크립트 지원이 필요하지 않은 경우, 당신은 무엇을 에뮬레이션 할 수 있어야한다 자바 스크립트 않습니다. 이 경우, 소스는 어떤 추가를 더 잘 알아야 할 필요가 있습니다. 그러나 제출하기 전에 숨겨진 필드 _method의 값이 delete으로 바뀝니다.

관련 문제