我正在尝试使用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 :(得分: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这样的脚本。如果是这样,你的脚本可能违反了服务条款(不是阅读很多葡萄牙语,我没有去寻找它们),他们可能会采取对策来破坏这个剧本。