京东抢购代码求助
在倒计时结束的时候,需要刷新抢购页面,准备预约按钮会变成抢购按钮,然后点击按钮进行抢购,如果不用脚本,手动刷新的话,页面加载出来,马上能点击抢购按钮,但是用selenium 的 find 方法 获取抢购按钮就要等很久,想问问有没有大佬指点一下这个是什么原因,如何解决? 其他页面,都是可以瞬间查找到元素,进行操作的,但是就是抢购页面不行,每次执行到红框里面的代码的时候,就要等几十秒,才能过去按钮信息 页面在加载吧 留个脚印,学习学习 selenium就是慢,没啥办法 貌似看到过直接绕过抢购页面,直接付款的插件。 {:9_231:} suchocolate 发表于 2021-6-4 00:42页面在加载吧
对 ,就是因为页面在加载,所以获取不到信息,但是浏览器上面页面已经显示出来了,是可以正常点击的 element = WebDriverWait(browser, 20).until(
EC.presence_of_element_located((By.XPATH, '''定位元素'''))
)
只要出现目标元素就不再等待全部元素加载完毕,直接可以对目标元素进行操作 本帖最后由 连帅帅 于 2021-6-10 16:59 编辑
给你提供一个JD秒杀抢购的脚本当参考,亲自试验过,用的时候改改时间,设置一下点击频率即可,如果抢到会自动跳转到支付页面。建议Chrome浏览器,F12查看源代码,选择console把脚本代码粘贴,按回车即可!
var nIntervId;
var tjjsId;
var submitDdId;
var tjbbId;
var count = 1;
var tjcs = 1;
var goDate;
function go() {
console.log("-------代码执行----第【" + count + "】次");
count++;
if (Date.now() >= new Date("2021-06-02 15:59:59")) {
if ($(parent.frames.document).find("#btn-reservation").length == 1) {
var sku = window.location.pathname.replace(/[^0-9]/ig, "");
var ref = "//cart.jd.com/gate.action?pid=" + sku + "&pcount=1&ptype=1";
console.log("https:" + ref);
$(parent.frames.document).find("#btn-reservation").attr("href", ref);//
parent.frames.document.getElementById("btn-reservation").click();
return;
}
if ($(parent.frames.document).find("#btn-reservation").length == 1) {
parent.frames.document.getElementById("btn-reservation").click();
return;
}
if ($(parent.frames.document).find("#InitCartUrl").length == 1) {
parent.frames.document.getElementById("InitCartUrl").click();
return;
}
if ($(parent.frames.document).find("#GotoShoppingCart").length == 1) {
rewrite('https://cart.jd.com/cart_index/');
}
if ($(parent.frames.document).find(".common-submit-btn").length == 1) {
var sku = window.location.pathname.replace(/[^0-9]/ig, "");
$(parent.frames.document).find("input:checkbox").trigger("click");
$(parent.frames.document).find("input:checkbox").attr("checked",true);
parent.frames.document.getElementsByClassName("common-submit-btn").click();
}
if ($(parent.frames.document).find("#order-submit").length == 1) {
//parent.frames.document.getElementById("order-submit").click();
clearInterval(nIntervId);
tjbbId = setInterval("tjbb()", 250);
}
if ($(parent.frames.document).find(".common-submit-btn").length == 1) {
var sku = window.location.pathname.replace(/[^0-9]/ig, "");
$(parent.frames.document).find("input:checkbox").trigger("click");
$(parent.frames.document).find("input:checkbox").attr("checked",true);
if($(parent.frames.document).find("input:checkbox").checked == true){
clearInterval(nIntervId);
tjjsId = setInterval("tjjs()", 300);
parent.frames.document.getElementsByClassName("common-submit-btn").click();
}
}
if ($(parent.frames.document).find(".index-channel-notice-paylogo").length == 1) {
clearInterval(nIntervId);
}
if ($(parent.frames.document).find(".dialog-close-notitle").length == 1) {
parent.frames.document.getElementsByClassName("dialog-close-notitle").click();
}
}
}
function tjbb() {
if ($(parent.frames.document).find(".plate-form-word").length == 1) {
clearInterval(tjbbId);
}else if ($(parent.frames.document).find("#order-submit").length == 1) {
parent.frames.document.getElementById("order-submit").click();
}
}
function tjjs() {
console.log("-----去结算提交次数【" + tjcs + "】次-----")
tjcs++;
if ($(parent.frames.document).find(".dialog-close-notitle").length == 1) {
console.log("------取消至少选一件------");
parent.frames.document.getElementsByClassName("dialog-close-notitle").click();
}
console.log("------尝试提交------");
var sku = window.location.pathname.replace(/[^0-9]/ig, "");
if($(parent.frames.document).find("input:checkbox").checked == true){
parent.frames.document.getElementsByClassName("common-submit-btn").click();
}else if ($(parent.frames.document).find(".common-submit-btn").length == 1) {
$(parent.frames.document).find("input:checkbox").trigger("click");
$(parent.frames.document).find("input:checkbox").attr("checked",true);
}
if ($(parent.frames.document).find(".checkout-submit").length == 1) {
console.log("------去结算已提交------");
clearInterval(tjjsId);
submitDdId = setInterval("submitDd()", 500);
}
}
function submitDd() {
if ($(parent.frames.document).find(".plate-form-word").length == 1) {
clearInterval(submitDdId);
}else if ($(parent.frames.document).find("#order-submit").length == 1) {
parent.frames.document.getElementById("order-submit").click();
clearInterval(submitDdId);
}
}
function rewrite(current) {
fr4me = '<frameset cols=\'*\'>\n<frame src=\'' + current + '\'/>';
fr4me += '</frameset>';
with (document) { write(fr4me); void (close()) };
}
//注入sql
rewrite(window.location.href);
var d = prompt("请输入抢购开始时间", "2021-06-02 15:59:59");
var pl = prompt("请输入刷新频率【1000为一秒,数值多少合适可以自己测试】", "300");
if (d) {
try {
goDate = new Date(d);
nIntervId = setInterval("go()", pl);
}
catch (e) {
alert("时间格式不正确,请使用yyyy-MM-dd hh:mm:ss格式,精确到秒, 请重试");
}
}else {
alert("请重试");
}
py学习 连帅帅 发表于 2021-6-10 16:57
给你提供一个JD秒杀抢购的脚本当参考,亲自试验过,用的时候改改时间,设置一下点击频率即可,如果抢到会自 ...
var nIntervId; 报错
是需要安装模块吗? haoliang9324 发表于 2021-6-15 10:06
var nIntervId; 报错
是需要安装模块吗?
不需要的,你在浏览器上登录你的京东,然后找到你要抢购的商品,点进去,按F12,选择Console,把代码贴进去就可以了,记得改时间,比如中午十二点的开始抢购,那你就把时间改为中午11点59分59秒。{:10_297:} 连帅帅 发表于 2021-6-10 16:57
给你提供一个JD秒杀抢购的脚本当参考,亲自试验过,用的时候改改时间,设置一下点击频率即可,如果抢到会自 ...
请问现在还能用吗?
页:
[1]