2

I am trying to make it where every time I visit a nike.com sneaker page, it automatically picks my shoe size, adds it to the cart, and checks out for me. Every time I try to run the script, I keep getting this error

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

Here is my script:

// ==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");

Help is very much appreciated, thank you!

Edit:

I just ran it through JSLint, and got this error:

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

4

1 に答える 1

1

selenium.select...試している Selenium コード (など) はどこで入手しましたか? Web ページ自体は Selenium を使用していますか? (疑わしい)。

Tampermonkey は Selenium 構文をサポートしていません。そのためにはある種のライブラリが必要@requireですが、私はそのようなライブラリを知りません (しかし、私は Selenium の専門家ではありません)。

@requireTampermonkey スクリプトを開発するには、ターゲット ページにあるJavaScript、ライブラリ、または関数を使用する必要があります。

スクリプトでjQueryおよびwaitForKeyElementsライブラリ/ユーティリティを使用していると思われるものを次に示します。

// ==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 を使用して、セレクター (特に最初のセレクター) を調整する必要があります。

于 2013-02-24T00:50:35.223 に答える