2012-03-12 55 views
1

我想要做一個Greasemonkey腳本來自動選擇一個單選按鈕。該調查有兩個圖像,當您單擊一個圖像時,該選項被選中,並且CAPTCHA框啓用投票。如何自動選擇照片單選按鈕?

我想知道是否有任何方法來自動選擇我想要的圖像。我試過一些命令,如.click().checked,但沒有成功。

這裏是投票的(部分)源HTML:

<fieldset> 
<legend>Validação de voto</legend> 
<div class="box-votacao"> 
    <ul class="duplo-lateral clearFix" id="participantes"> 

     <li class="off"> 
      <div class="foto"> 
       <a href="#"> 
        <img class="foto-chamada" src="http://s.glbimg.com/et/bb/f/original/participantes/joao_carvalho_360x300.png" alt="João Carvalho"> 
        <div class="selecionado"></div> 
        <p class="bloco-01 off"> 
         <input name="opt" id="opt" value="1" type="radio"> 
         <strong class="nome">João Carvalho</strong> 
        </p> 
       </a> 
      </div> 
      <p class="legenda">Para votar em João Carvalho, disque 0303 108 8401 ou envie um SMS para 88401</p> 
     </li> 
     <li class="off ultimo"> 
      <div class="foto"> 
       <a href="#"> 
        <img class="foto-chamada" src="http://s.glbimg.com/et/bb/f/original/participantes/yuri_360x300.png" alt="Yuri"> 
        <div class="selecionado"></div> 
        <p class="bloco-01 off"> 
         <input name="opt" id="opt" value="2" type="radio"> 
         <strong class="nome">Yuri</strong> 
        </p> 
       </a> 
      </div> 
      <p class="legenda">Para votar em Yuri, disque 0303 108 8402 ou envie um SMS para 88402</p> 
     </li> 

    </ul> 
</div> 
<div class="validacao clearFix noBorder"> 
    <div id="desabilitado"></div> 
    <ul> 
     <li> 
      <img id="captcha" title="seguranca" /> 
     </li> 
     <li class="digitar-codigo"> 
      <input name="answer" type="text" /> 
      <p id="erro" class="erro"><span>Erro!</span> <span class="erro-txt">Texto incorreto. Tente novamente.</span></p> 
     </li> 
     <li class="botao"> 
      <span><input name="votar" type="submit" class="submit" value="votar"/></span> 
     </li> 
    </ul> 
</div> 
</fieldset> 

回答

0

請問你的腳本決定要點擊哪一個形象?

而且它點擊的圖像?假設是真的,那麼這樣的事情應該工作:

var targImage = document.querySelector ("div.box-votacao img.foto-chamada[alt='João Carvalho']"); 
var clickEvent = document.createEvent ('MouseEvents'); 
clickEvent.initEvent ('click', true, true); 
targImage.dispatchEvent (clickEvent); 


如果它不工作,張貼鏈接到目標頁面,如果它是公共...或的保存快照鏈接該頁面 - 包括JavaScript - 如果它不公開。



更新,現在the target page已給出。

該頁面有點棘手;只需點擊一下就可以了。此外,檢查頁面,它不是被點擊的圖像,它是包含<li>重要的點擊處理程序。

所以,用點擊和一些JS的組合,下面已經過測試工作:

//--- Click the link and list-item associated with the desired image. 
var targImg  = document.querySelector ("div.box-votacao img.foto-chamada[alt='João Carvalho']"); 
targLink  = targImg.parentNode; 
targListItem = targImg.parentNode.parentNode.parentNode; 

clickNode (targListItem); 

var ps   = unsafeWindow.ps; 
for (var j in ps) { 
    if (ps[j].className) { 
     ps[j].className = ps[j].className.replace ("on", "off"); 
    } 
} 
targListItem.className = targListItem.className.replace ("off", "on"); 
targListItem.getElementsByTagName ("input")[0].checked = "true"; 

var captchaBox = document.querySelector ("#desabilitado"); 
if (captchaBox) { 
    captchaBox.id = "habilitado"; 
} 


function clickNode (targNode) { 
    var clickEvent = document.createEvent ('MouseEvents'); 
    clickEvent.initEvent ('click', true, true); 
    targNode.dispatchEvent (clickEvent); 
} 


最後,該頁面可能已被設計來阻止腳本像Greasemonkey的。如果是這樣,你的腳本可能違反服務條款(不會閱讀太多葡萄牙語,我沒有去尋找他們),他們可能會採取反措施來破壞這個腳本。

+0

我試過的最後一段代碼: 'code' var name = document.getElementsByClassName('foto-chamada'); name [i] .click(); '代碼' 我會改變[我]取決於我想投票 我試了你的代碼,並沒有奏效。這裏是鏈接http://tvg.globo.com/bbb/bbb12/votacao/291.html – Comentarist 2012-03-13 17:22:37

+0

今天的調查將會停止,如果在你看到之前關閉,這裏是快照。一旦頁面加載http://i43.tinypic.com/29kq82o.png一旦選擇該選項http://i40.tinypic.com/5n4okm.png代碼從頁面pastebin.com/raw.php?i= 98V7eMA6 thx – Comentarist 2012-03-13 23:08:26

+0

在檢查了該頁面及其代碼後,我已經更新了答案。頁面設計建議可能已經建立了基本的反腳本措施。只要確保,不要使用此代碼來違反任何可能適用的法律或服務條款。 – 2012-03-14 01:31:22