我试图在每次访问nike.com运动鞋页面的时候,它会自动选择我的鞋码,将其添加到购物车中,然后检查我。每次我尝试运行脚本时,我都会收到此错误
错误:执行脚本'My Fancy New Userscript'失败了!硒没有定义
这是我的剧本:
// ==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 :(得分:1)
您在哪里获得了您正在尝试的Selenium代码(selenium.select...
等)?网页本身是否使用Selenium? (可疑)。
Tampermonkey不支持Selenium语法。你需要@require
某种类型的库,我不知道这样的库(但我不是Selenium专家)。
您需要使用javascript或您@require
的库,或目标页面上的函数来开发Tampermonkey脚本。
以下是您的脚本可能使用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来调整选择器(尤其是第一个),应该包含在问题中。