2012-03-12 2 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 - если она не является общедоступной.



Update, теперь, когда 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'); имя [i] .click(); 'code' Я бы изменил [i] в ​​зависимости от того, что я должен был проголосовать Я попробовал ваш код и не работал. Вот ссылка http://tvg.globo.com/bbb/bbb12/votacao/291.html – Comentarist

+0

Опрос уйдет сегодня, если он выключен, прежде чем вы сможете увидеть, вот снимки. после загрузки страницы http://i43.tinypic.com/29kq82o.png после выбора опции http://i40.tinypic.com/5n4okm.png код со страницы pastebin.com/raw.php?i= 98V7eMA6 thx заблаговременно – Comentarist

+0

После изучения этой страницы и ее кода я обновил ответ. Дизайн страницы предполагает, что были встроены рудиментарные меры по борьбе с сценариями *. * Чтобы быть уверенным, не используйте этот код, чтобы нарушать какие-либо законы или условия обслуживания, которые могут применяться. –

Смежные вопросы