2011-04-17 218 views
0

脚本:油猴XPath和萤火虫发出

从萤火的XPath按钮如下:

.//*[@id='ctl00_mainContentPlaceholder_Button3'] 

和脚本的段子:

<br> 
    <input name="ctl00$mainContentPlaceholder$Button3" 
      value="Back To Auctions" 
      onclick="closePopup(); return false;" 
      id="ctl00_mainContentPlaceholder_Button3" 
      class="simplemodal-close" 
      style="width:160px;" 
      type="submit"> 
<br> 

我的GM脚本如下如下:

// @include * 
// @version  0.1 
// @description Automatically click // ==/UserScript== 

click_popupBtn1 = function() { 

    var joinBtn=document.evaluate(
        '//*[@id, "ctl00_mainContentPlaceholder_Button3"]', 
        document, 
        null, 
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 
        null).singleNodeValue.click(); 
alert(joinBtn); 
    if(!joinBtn) return false; 
    joinBtn.click(); 
    return true; 
} 

click_popupBtn1();

我发现了这个拍卖网站,我想用通用汽车实现自动化。有两个屏幕截图。 www.mediafire.com/?lwy7agybtfn2x。第一个屏幕截图是网站的基本概述,带有出价按钮。第二个概述,奖金弹出。

我需要做的是:首先需要一些帮助来摆脱弹出窗口。如果它在那里我不能出价。我为登录页面使用了一个类似的脚本,并设法让GM自动登录,因为服务器需要您每三个小时左右登录一次。参见上面提到的脚本和xpath。我试过了,但是我的gm脚本文件没有点击它。

然后项目:我想自己做一些,但我需要一些指针。上附加的txt文件,auction1.txt,我已经复制了一些Firebug的控制台文件,这看起来像:

GET http://www.xxx.xxx/REST_Service/REST_Auction.svc/GetAuctionData?_=1303059143094 
200 OK 
29.62s firebu...rver.js (line 169) 
<System> 
ParamsHeadersResponse {"d":[["","","y","ZAR","1","33713","8887, 8887, 8887, 8887, 8887",null,"1.26","8887","0:13:30","","12","","C","29",null],["","","y","ZAR","2","34029","",null,"0.76","NONE","0:10:37","","5","","L",null,null],["","","y","ZAR","3","30332","3616, 9390, 9841, 8664, 4901",null,"379.80","3616","0:01:09","","1100","","T",null,null],["","","y","ZAR","4","33987","3616, 9168, 0605, 9168, 8771",null,"1.26","3616","0:00:51","","12","","T",null,null],["","","y","ZAR","5","34030","",null,"0.76","NONE","0:12:28","","5","","L",null,null],["y","-00:00","y","ZAR","6","34028","1137, 1137, 1137, 1137",null,"2.64","1137","0:20:05","","12","","L","12","vkSaGLYmZD+vgphl90foiM+3QXDf0c7SRfpMnt9PSDw="],["","","y","ZAR","7","33938","3616, 3616",null,"5.60","3616","0:01:50","","55","","T",null,null],["","","y","ZAR","8","33729","3616, 6197, 3616, 6197, 9134",null,"3.34","3616","0:01:26","","29","","T",null,null],["","","y","ZAR","9","33867","1551, 7243",null,"1.73","1551","0:02:40","","10","","B",null,null],["","","y","ZAR","10","33293","1551, 7243, 7243, 7243, 7243",null,"3.43","1551","0:06:10","","10","","B",null,null],["","","y","ZAR","11","33174","7243, 4901, 3614, 0481, 0481",null,"3.71","7243","0:06:10","","10","","B",null,null]]} 
GET http://www.xxx.xxx/REST_Service/REST_Auction.svc/GetAuctionData?_=1303059144766 

从那里我可以看到我需要的所有信息,并更新每一秒,所以为了让我告诉GM脚本在哪个按钮上出价,我需要将这些信息放入要处理的脚本中。有没有人有任何想法?

我在为12个小型拍卖的每一个写一个小脚本,每个处理自己的部分,收集自己的信息。我认为这些来自Firebug的反应可能是有用的,也是更直接的获取信息的方式,即从窗口中逐一减去它们,然后再进行更新。

+0

看起来你有'ctl00 $ mainContentPlaceholder $ Button3'而不是'ctl00_mainContentPlaceholder_Button3' ... – 2011-04-17 20:57:13

+0

@ alenjandro:页面中的脚本是:“

“ – Ludwig 2011-04-18 03:01:53

+0

但我的GM脚本我为甲肝:” VAR joinBtn = document.evaluate( '// * [@ id中, “ctl00_mainContentPlaceholder_Button3”]', 文件, 空, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, 空).singleNodeValue.click();”它是ctl00_mainContentPlaceholder_Button3,所以我不知道如果我是正确的... – Ludwig 2011-04-18 03:05:09

回答

1

没有左看右看的代码或通过后整体更彻底地阅读,这条线跳出我: '//*[@id, "ctl00_mainContentPlaceholder_Button3"]'

我不是100%地肯定了我的头顶部,但我相信这也许应该是: '//*[@id="ctl00_mainContentPlaceholder_Button3"]'

我强烈建议您使用Firefinder for Firebug插件,以帮助创建的XPath路径:]

其次,看看在Mozilla Developers Network page产生点击事件s(iirc,joinBtn.click();在Greasemonkey脚本中不起作用)。

+0

+1,但他确实声明他使用FireBug获取XPath。 – 2011-07-06 00:09:54

+0

@Brock Adams:是的,他提到使用Firebug,但_Firebug!== Firefinder_。我假设他使用Firebug的HTML选项卡来获取XPath(也许右键单击节点>复制XPath?),但这与_separate addon_Firefinder的功能不同。 Firefinder是一个单独的插件,它扩展了Firebug以在Firebug面板(Console | HTML | CSS | Script | DOM | Net [| Firefinder])上的额外选项卡中提供额外的功能。 – kwah 2011-07-06 00:21:06

+0

好的。我刚刚看到该扩展的描述:'“查找匹配所选CSS选择器或XPath表达式的HTML元素”,并假定OP已覆盖该部分。但是,我现在看到扩展也可能有助于测试XPath查询。 – 2011-07-06 00:43:10