Xpath 需要用Gm脚本单击弹出窗口,但该脚本并不总是存在
我仍然有一个问题,点击屏幕上的弹出按钮,只有当你赢得了拍卖时才会出现。这个弹出窗口似乎是个问题。我设法得到了部分帮助,我能够点击投标按钮,但popu仍然是一个问题。弹出窗口的xpath是: ./*[@id='ctl00\u mainContentPlaceholder\u Button3'] 我目前使用的脚本是:Xpath 需要用Gm脚本单击弹出窗口,但该脚本并不总是存在,xpath,greasemonkey,Xpath,Greasemonkey,我仍然有一个问题,点击屏幕上的弹出按钮,只有当你赢得了拍卖时才会出现。这个弹出窗口似乎是个问题。我设法得到了部分帮助,我能够点击投标按钮,但popu仍然是一个问题。弹出窗口的xpath是: ./*[@id='ctl00\u mainContentPlaceholder\u Button3'] 我目前使用的脚本是: // ==UserScript== // @name click popup try1.3 // @include http://www.trada
// ==UserScript==
// @name click popup try1.3
// @include http://www.trada.net/*
// ==/UserScript==
// ctl00_mainContentPlaceholder_Button3
function PopClick ()
{var PopBtn1=document.getElementById("ctl00_mainContentPlaceholder_Button3");
alert('try1');
PopBtn1.click (1);
alert('finished');
};
PopClick();
但是问题似乎是脚本在等待弹出窗口的页面上没有保持活动状态,我想如果我能让它“等待”弹出窗口出现,它应该可以工作。我对通用汽车公司很陌生,所以如果有简单的错误,请原谅。我得到了像布罗克·索法这样的人的大力帮助,他正在给我指路。慢慢地,但肯定我已经掌握了窍门。删除警报,我只是使用它们来查看它是否正在执行。最简单的解决方案是运行此功能,比如说每秒钟运行一次,从而“等待”弹出窗口出现:
setInterval(PopClick, 1000);
在调用click之前,最好重写PopClick以检查元素是否存在,如下所示:
function PopClick () {
var PopBtn1=document.getElementById("ctl00_mainContentPlaceholder_Button3");
if(PopBtn1) {
PopBtn1.click ();
// It is also makes sense to clear interval here. see docs for setInterval/clearInterval please :)
}
};
也许这会帮助你解决冻结问题
然而,更合适的方法是设置侦听器。由于您使用的是Firefox,它应该可以正常工作:
function click_if_popup(evt) {
if(evt.target.hasAttribute('id') && evt.target.getAttrubute('id') =="ctl00_mainContentPlaceholder_Button3")
evt.target.click();
}
document.addEventListener('DOMNodeInsertedIntoDocument', click_if_popup);
抱歉,我没有测试任何代码:我只是想让您大致了解在哪里挖掘。当我像这样使用setInterval(PopClick,1000);,大多数时候,页面都会冻结。如果我把它改成10秒,就可以了。谢谢。@Ludwig,我更新了答案。你可能想试试我补充的另一种方法。