2013-02-23 3 views
1

나는 nike.com 운동화 페이지를 방문 할 때마다 신발 크기를 자동으로 선택하여 장바구니에 추가하고 나를 체크 아웃합니다. 내가 스크립트를 실행하려고 할 때마다, 나는이 오류 여기내 Tampermonkey 스크립트가 "셀레늄이 정의되지 않았습니다"를 throw하는 이유는 무엇입니까?

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

답변

0
당신은 당신이하려고하는 (등 selenium.select...)이 셀레늄 코드를 얻을 않았다

? 웹 페이지 자체가 Selenium을 사용합니까? (불안한).

Tampermonkey는 Selenium 구문을 지원하지 않습니다. 당신은 @require 일종의 라이브러리가 필요합니다. 나는 그런 라이브러리를 알지 못합니다. (하지만 저는 셀레늄 전문가가 아닙니다.)

당신은 @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

방금 ​​내가 tampermonkey에 준 코드를 시도해 보았습니다. 신발을 선택하지 않았는데, 그것은 제가 장바구니에 아무것도 넣지 않고 계산대로 옮겨갔습니다. – Nite

+0

페이지에 대한 적절한 정보를 제공하지 않아서 (HTML 스 니펫과 링크가 최소한입니다.) 어쨌든이 질문과 관련이 없으므로 오류가 발생한 이유와 해결 방법을 보여주었습니다. 궁극적 인 스크립트 작업을하는 것이 문제의 일부가 아니 었습니다 (스택 오버 플로우는 스크립트 작성 서비스가 아닙니다). 추가 도움이 필요하면이 질문에 답변하고 새로운 문제로 새로운 질문을 만드십시오. 아마도 이런 종류의 컨트롤을 선택한 다음이 종류의 단추를 어떻게 클릭합니까? –

+0

글쎄, 가격으로 스크립트를 만드나요? 나는 당신을 지불하는 데 관심이있을 것입니다. – Nite