因此,我每次访问任何nike.com运动鞋页面(没有HTML链接)时都会尝试将其设置在哪里,它会自动选择我的鞋子尺寸,将其添加到购物车中,然后检查我.
我目前正在尝试使用这个脚本(下面),但是每次我去运动鞋页面时,它都没有正确添加我想要的鞋子尺寸,而是直接在我的购物车中没有任何东西结账.
我被告知我需要将代码与实际的页面HTML匹配,但我不知道该怎么做.请帮忙.
// ==UserScript==
// @name _Nike auto-buy(!!!) script
// @include http://*/*
// @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) …Run Code Online (Sandbox Code Playgroud) 我可以在element selector使用时触发click事件trigger
$('element selector').trigger('click')
Run Code Online (Sandbox Code Playgroud)
是否可以触发班次点击.我的意思是shift+鼠标左键单击.
一些javascript如何告诉窗口鼠标按钮已被释放?由于跨域iframe,mouseup事件正在丢失.我可以发现问题已经发生,但我不知道该怎么做才能治愈它.如果我可以强制鼠标指针位置,问题就会消失; 但是不允许javascript更改鼠标指针位置.如果我能"点击鼠标"那么问题就会消失,因为它会取代丢失的鼠标事件; 但在新的mouseup事件上使用dispatchEvent什么都不做.
mouseup通过在iframe文档中附加alert()鼠标来证明事实确实是丢失的事件body.如果在指针位于iframe内部时释放鼠标按钮,则会发出警报; 如果在指针位于iframe之外时释放鼠标按钮,则不会发生这种情况.我再次强调,只有CHROME有这种行为.在Firefox,Edge或IE中执行完全相同的操作,无论鼠标指针在何处,都会立即检测到鼠标按钮释放.
通过将事件处理程序附加到<body>外部文档中,我可以捕获鼠标.然后我可以使用标准的postMessage技术告诉内部iframe窗口发生了mouseup.内部iframe知道在拖动过程中哪个元素处于活动状态,所以这很好.但是,在实际模拟mouseup事件时,我没有任何运气.我在这里试过这个triggerMouseEvent技术.它运行没有错误,但它显然没有做任何事情.这里的演示具有上面的最小示例,以及在外部文档中捕获mouseup的管道,将消息发布到内部文档,并调用:Demo2triggerMouseEvent
在尝试创建最小的示例时,我发现可能以某种方式涉及框模型.Demo1a与上面的demo1相同,只是iframe元素的高度为710px而不是700px.在我的测试机器上, …
我想使用 java 脚本但不使用 jquery 在空的 td 标签上触发 ommousedown 事件。任何建议请
我想模拟点击GMail COMPOSE按钮使用JS而不使用JQuery.
这是按钮:
<div class="T-I J-J5-Ji T-I-KE L3" role="button" tabindex="0" gh="cm"
style="-webkit-user-select: none;">COMPOSE</div>
Run Code Online (Sandbox Code Playgroud)
这是我的js:
var element = document.getElementsByClassName('T-I-KE')[0];
element.click();
Run Code Online (Sandbox Code Playgroud)
结果:undefined在所有浏览器中
图片:http://i.imgur.com/4IX9DZX.png
已经尝试过:
var event = document.createEvent("MouseEvent");
event.initEvent("click",true,true);
var element=document.getElementsByClassName("T-I-KE")[0];
element.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
结果:true.但没有任何反应.
$(selector).click()结果什么也没发生。
这个答案在浏览器控制台中有效,并将 javascript 上下文设置为 iframe,但不是主页:
simulateMouseClick($("iframe").contents().find(selector))
结果是:
未捕获的类型错误:targetNode.dispatchEvent不是
triggerMouseEvent(:5:20)处的函数
,位于:8:9
处,位于Array.forEach()处
,位于simulateMouseClick(:7:52)处
:1:1处
$("iframe").contents().find(selector).text()给了我预期的内容,所以它是正确的元素。
我怎样才能做到这一点?
编辑:添加此内容是因为人们显然无法阅读:
$("iframe").contents().find(selector).click()
绝对没有效果,因为.click()不会模拟真正的鼠标单击。
我尝试使用 JS 创建一个应用程序来登录https://www.easports.com/fifa/ultimate-team/web-app/#,但无法单击“登录”按钮。
调用按钮元素上的单击。
document.getElementsByTagName("button")[0].click()
Run Code Online (Sandbox Code Playgroud)
什么都没发生。如果我用鼠标移动并单击它,它就会起作用。
这是页面上的按钮:
<a id="dispatchOnJobButton" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c" href="#" data-role="button" data-theme="c" data-disabled="false">
<span class="ui-btn-inner ui-btn-corner-all" aria-hidden="true">
<span class="ui-btn-text">Dispatch on next job</span>
</span>
</a>
Run Code Online (Sandbox Code Playgroud)
我需要Greasemonkey来点击它.我尝试了很多不同的方法,但似乎没有任何方法可以解雇它应该运行的任何函数.
var clickEvent = document.createEvent("MouseEvents");
clickEvent.initEvent("click", true, true);
document.getElementById('dispatchOnJobButton').dispatchEvent(clickEvent);
// also tried
document.getElementById('dispatchOnJobButton').click();
// and this
unsafeWindow.document.getElementById('dispatchOnJobButton').click();
Run Code Online (Sandbox Code Playgroud)
关于我可以尝试的其他事情的任何想法?
鉴于我无法直接使用内部react-testing-library组件进行测试,我将如何测试使用该组件的组件react-select?例如,如果我有一个基于的值的条件渲染,而该值react-select不渲染传统渲染器<select/>,我还能触发更改吗?
import React, { useState } from "react";
import Select from "react-select";
const options = [
{ value: "First", label: "First" },
{ value: "Second", label: "Second" },
{ value: "Third", label: "Third" },
];
function TestApp() {
const [option, setOption] = useState(null);
return (
<div>
<label htmlFor="option-select">Select Option</label>
<Select
value={option}
options={options}
onChange={option => setOption(option)}
/>
{option && <div>{option.label}</div>}
</div>
);
}
export default TestApp;
Run Code Online (Sandbox Code Playgroud)
我什至不确定我应该查询什么。是隐藏的输入吗?
reactjs jestjs react-select react-testing-library react-hooks
在avito.ru(俄罗斯房地产网站)上,隐藏人的电话,直到您单击它为止。我想使用Scrapy + Splash收集电话。
范例网址:https://www.avito.ru/moskva/kvartiry/2-k_kvartira_84_m_412_et._992361048
单击按钮后,将显示弹出窗口,并且可以看到电话。
我使用带有以下Lua脚本的Splash execute API:
function main(splash)
splash:go(splash.args.url)
splash:wait(10)
splash:runjs("document.getElementsByClassName('item-phone-button')[0].click()")
splash:wait(10)
return splash:png()
end
Run Code Online (Sandbox Code Playgroud)
未单击该按钮,也不显示电话号码。这是一项微不足道的任务,我无法解释为什么它不起作用。
如果将替换item-phone-button为,则单击可以在同一页面上的其他字段上正常使用js-show-stat。因此,在一般情况下,Javascript 和蓝色的“显示电话”按钮必须具有某种特殊性。
为了隔离问题,我创建了一个包含最少示例脚本的存储库和用于Splash的docker-compose文件:https : //github.com/alexanderlukanin13/splash-avito-phone
Javascript代码有效,您可以使用Chrome和Firefox中的Javascript控制台进行验证
document.getElementsByClassName('item-phone-button')[0].click()
Run Code Online (Sandbox Code Playgroud)
我已经在Splash 3.0、3.1、3.2版本中尝试过,结果是一样的。
我也尝试过:
@Lore的建议,包括simulateClick()方法(请参见simulate_click分支)
mouseDown / mouseUp事件,如此处所述:模拟Tampermonkey中的mousedown,click,mouseup序列?(请参见trigger_mouse_event分支)
javascript ×7
jquery ×3
click ×2
greasemonkey ×2
chromium ×1
gmail ×1
iframe ×1
jestjs ×1
mouseup ×1
python ×1
react-hooks ×1
react-select ×1
reactjs ×1
scrapy ×1
simulate ×1
tampermonkey ×1