- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试解决自动登录到 https://account.booking.com/sign-in 的脚本中的错误。
function clickButton (){
const msg = document.querySelector(".bui-form__error");
const button = document.querySelector(".bui-button");
if (msg && msg.id !== "loginname-error" ) {
console.log(msg.textContent);
} else if (button) {
button.click();
} else {
console.log("Not yet...");
return;
}
}
setInterval(clickButton, 200);
大多数时候,这工作正常。尽管 Chrome 会自动填写用户名字段,但它有时会显示登录名错误,出于我们的目的我们可以安全地忽略它——但是,这有时会导致页面由于某种原因变得对脚本无响应。用户在页面上所做的几乎任何事情都会导致脚本继续——按 F12 打开 Dom 检查器,单击页面上的任何地方,甚至在控制台上运行命令(就像 'a = document. querySelector...
') 所有这些都以某种方式使脚本正常运行。
我试图关注 previous answers ,实现了 triggerMouseEvent
并运行 mouseover、mousedown、mouseup 和 click。这与简单地使用 click()
没有什么不同。由于单击页面上的其他位置可以修复它,因此我尝试在其他元素上使用此类单击事件,然后再次在按钮上使用它们;这与简单地使用 click()
的行为也没有什么不同。我看到的 Tampermonkey 脚本“在...之后工作”的唯一结果是页面重新加载的 AJAX 问题,而不是用户与窗口的交互。
在点击事件之后放置 console.log("click")
表明它很好地到达了点击事件。使用 triggerMouseEvent
,我记录了 dispatchEvent
,如下所示:
function triggerMouseEvent (node, eventType) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent (eventType, true, true);
console.log(node.dispatchEvent (clickEvent));
}
按预期返回“true
”。
我试图在每次点击之间发送如下键盘事件:
function pressf12(){
var event = new KeyboardEvent("pressF12");
event.keyCode = 123;
event.which = 123;
event.altKey = false;
event.ctrlKey = false;
event.shiftKey= false;
event.target = window;
window.dispatchEvent(event);
}
这也没有奏效。我完全不知道是什么导致了这个问题,也不知道可以做些什么来解决这个问题。
这是加载页面后在控制台上显示的内容,如果相关的话:
[Report Only] Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src saa.booking.com *.bstatic.com bstatic.com google-analytics.com 'self' 'nonce-6B8EKlfK9vqB8Uy'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.
content_script @ VM1347:61 (anonymous) @ VM1347:71
和
sign-in?op_token=...:38 POST https://account.booking.com/navigation_times?sid=&pid=...&nts=…=3&lang=en-us&ref_action=Signin_Index&aid=...&stype=&route=&ua=&ch=<= net::ERR_BLOCKED_BY_CLIENT callback @ sign-in?op_token=...:38 wrapper @ error_catcher:756 setTimeout (async)
win.setTimeout @ error_catcher:666 callback @ sign-in?op_token=...:38 load (async)
nav_timing @ sign-in?op_token=...:38 (anonymous) @ sign-in?op_token=...:38
截图如下:
用户点击页面后不会显示更多消息。即使我将间隔增加到 5000,在页面加载并且这两条消息都自行显示后,脚本中的点击也不会执行任何操作。
我想到这可能是由 Chrome 设置、插件等引起的,但它发生在我自己的多台计算机以及其他用户的计算机上。即使是这种情况,也需要一些解决方法。
我还想到,这可能与TM的沙箱有某种关系。尝试 @grant none
、@grant unsafeWindow
,并根据 this answer 插入内联脚本都有相同的问题行为。插入内联脚本确实会在控制台中产生更多的不安全内联错误。
最佳答案
在注册一个虚拟帐户后,我在 Chrome 中使用 Tampermonkey 和 Firefox 中使用 Greasemonkey 尝试了您的脚本。 setInterval 延迟为 200 时,它们不起作用。您需要将 setInterval 延迟增加到 1000,它才会起作用。
关于javascript - 在用户与窗口交互之前,Tampermonkey 脚本点击事件什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520776/
在为 Web 应用程序用例图建模时,为用户可以拥有的每个角色创建一个角色是否更好?或拥有一个角色、用户和一个具有特权的矩阵? guest < 用户 < 版主 < 管理员 1: guest 、用户、版主
我无法使用 Elixir 连接到 Postgres: ** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P
这个问题已经有答案了: Group by field name in Java (7 个回答) 已关闭 7 年前。 我必须编写一个需要 List 的方法并返回 Map> . User包含 Person
感谢您的帮助,首先我将显示代码: $dotaz = "Select * from customers JOIN contracts where customers.user_id ='".$_SESS
我只想向所有用户中的一个用户显示一个按钮。我尝试了 orderByKey() 但没有成功! 用户模型有 id 成员,我尝试使用 orderByChild("id") 但结果相同! 我什至尝试了以下技巧
我们在工作中从 MongoDB 切换到 Postgres,我正在建立一个 BDR 组。 在这一步,我正在考虑安全性并尽可能锁定。因此,我希望设置一个 replication 用户(角色)并让 BDR
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我可以使用 Sonata User Bundle 将 FOS 包集成到 sonata Admin 包中。我的登录功能正常。现在我想添加 FOSUserBundle 中的更改密码等功能到 sonata
在 LinkedIn 中创建新应用程序时,我得到 4 个单独的代码: API key 秘钥 OAuth 用户 token OAuth 用户密码 我在 OAuth 流程中使用前两个。 的目的是什么?最后
所以..我几乎解决了所有问题。但现在我要处理另一个问题。我使用了这个连接字符串: SqlConnection con = new SqlConnection(@"Data Source=.\SQLEX
我有一组“用户”和一组“订单”。我想列出每个 user_id 的所有 order_id。 var users = { 0: { user_id: 111, us
我已经为我的Django应用创建了一个用户模型 class User(Model): """ The Authentication model. This contains the u
我被这个问题困住了,找不到解决方案。寻找一些方向。我正在用 laravel 开发一个新的项目,目前正致力于用户认证。我正在使用 Laravels 5.8 身份验证模块。 对密码恢复 View 做了一些
安装后我正在使用ansible配置几台计算机。 为此,我在机器上本地运行 ansible。安装中的“主要”用户通常具有不同的名称。我想将该用户用于诸如 become_user 之类的变量. “主要”用
我正在尝试制作一个运行 syncdb 的批处理文件来创建一个数据库文件,然后使用用户名“admin”和密码“admin”创建一个 super 用户。 到目前为止我的代码: python manage.
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
我已在 Azure 数据库服务器上设置异地复制。 服务器上运行的数据库之一具有我通过 SSMS 创建的登录名和用户: https://learn.microsoft.com/en-us/azure/s
我有一个 ionic 2 应用程序,正在使用 native FB Login 来检索名称/图片并将其保存到 NativeStorage。流程是我打开WelcomePage、登录并保存数据。从那里,na
这是我的用户身份验证方法: def user_login(request): if request.method == 'POST': username = request.P
我试图获取来自特定用户的所有推文,但是当我迭代在模板中抛出推文时,我得到“User”对象不可迭代 观看次数 tweets = User.objects.get(username__iexact='us
我是一名优秀的程序员,十分优秀!