2013-02-23 159 views
1

我试图让每一个地方我访问nike.com运动鞋页面时,它会自动挑选我的鞋的大小,将其添加到购物车,并检查了我。每次我尝试运行脚本,我不断收到此错误为什么我的Tampermonkey脚本抛出“Selenium没有定义”?

ERROR: Execution of script 'My Fancy New Userscript' failed! selenium is not defined

这里是我的脚本:

// ==UserScript== 
// @name  My Fancy New Userscript 
// @namespace http://*/* 
// @version 0.1 
// @description enter something useful 
// @match  http://*/* 
// @copyright 2012+, You 
// ==/UserScript== 

selenium.select("class=selectBox-label", "10"); // this selects size 10 
selenium.click("class=add-to-cart nike-button nike-button-orange"); 
selenium.waitForElement("class=checkout-button nike-button nike-button-orange"); 
selenium.click("class=checkout-button nike-button nike-button-orange"); 

帮助非常感谢,谢谢!

编辑:

我只是跑它通过JSLint的,并得到了这个错误:

'selenium' was used before it was defined. (Line 1 Character 1) ----> selenium.select("class=selectBox-label", "10"); // this selects size 10

+0

您在使用前应定义“硒”。确保您的脚本在包含硒之后运行。 – jeroenvisser101 2013-02-23 15:51:46

回答

0

你从哪里得到您试图硒码(selenium.select...,等等)?网页本身是否使用Selenium? (疑)。

Tampermonkey不支持硒语法。你需要@require某种库是的,我不知道这样的库的(但我不是一个专家硒)。

您需要使用JavaScript,或者库,你@require,或功能是在目标页面上发展Tampermonkey脚本。

这里就是你的脚本可能是使用jQuerywaitForKeyElements库/公用事业:

// ==UserScript== 
// @name  _Nike auto-buy(!!!) script 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. 
*/ 

var okayToClickAddtoCart = false; 

//-- Assumes that size is a standard <option> tag or similar... 
waitForKeyElements (".selectBox-label[value='10']", selectShoeSize); 

function selectShoeSize (jNode) { 
    jNode.prop ('selected', true); 

    okayToClickAddtoCart = true; 
} 


waitForKeyElements (".add-to-cart.nike-button", clickAddToCart); 

function clickAddToCart (jNode) { 
    if (! okayToClickAddtoCart) { 
     return true; //-- Don't click yet. 
    } 

    var clickEvent = document.createEvent ('MouseEvents'); 
    clickEvent.initEvent ('click', true, true); 
    jNode[0].dispatchEvent (clickEvent); 
} 


waitForKeyElements (".checkout-button", clickCheckoutButton); 

function clickCheckoutButton (jNode) { 
    var clickEvent = document.createEvent ('MouseEvents'); 
    clickEvent.initEvent ('click', true, true); 
    jNode[0].dispatchEvent (clickEvent); 
} 


你将不得不调整使用HTML从实际网页中的选择(特别是第一个) ,你应该在问题中包含

+0

我只是试过你给我的关于篡改密码的代码,它没有选择鞋子,它只是让我在我的购物车里没有任何东西结帐。 – Nite 2013-02-24 01:38:01

+0

这是因为你没有提供关于页面的足够信息(HTML代码片段和链接是最低限度的)。无论如何,这与这个问题无关,我向你展示了为什么你遇到了错误以及如何解决这个问题。让你的终极脚本工作不是问题的一部分(也不适合,Stack Overflow不是脚本编写服务)。如果您需要进一步帮助,请回答这个问题,并用新问题创建一个新问题。可能是这样的:“我如何选择这种控件然后点击这种按钮?” – 2013-02-24 01:57:41

+0

那么,你是否为价格创建脚本?我会有兴趣付钱给你。 – Nite 2013-02-24 02:18:56

相关问题