如何在WebView中模拟Google Drive加密PDF的提交按钮点击?
问题:模拟Google Drive加密PDF提交按钮点击
我在WebView中打开Google Drive托管的加密PDF文件,页面加载完成后,通过以下JavaScript代码向密码输入框注入了密码:
document.getElementsByClassName('ndfHFb-c4YZDc-UmsTj-YPqjbf')[0].value = '123456'
但尝试模拟提交按钮点击时,以下代码无效:
document.getElementsByClassName('ndfHFb-c4YZDc-UmsTj-YPqjbf')[0].focus() document.getElementsByClassName('ndfHFb-c4YZDc-UmsTj-YPqjbf')[0].click()
请问应该用什么JavaScript命令模拟提交按钮点击?
解决方法
你之前的代码错误地操作了密码输入框,而非提交按钮。需要定位到提交按钮元素后再触发点击操作,以下是几种可行的实现方式:
- 通过常见类名定位提交按钮
Google Drive的密码提交按钮通常使用特定类名组合,可直接通过选择器定位:
document.querySelector('.VfPpkd-LgbsSe.VfPpkd-vQzf8d').click()
- 通过按钮文本内容定位
如果按钮显示“提交”(或英文“Submit”),可以按文本匹配查找:
Array.from(document.querySelectorAll('button')) .find(btn => btn.textContent.trim() === '提交') .click()
- 通过输入框关联父容器定位
利用输入框的父容器,查找内部的提交按钮:
const inputBox = document.getElementsByClassName('ndfHFb-c4YZDc-UmsTj-YPqjbf')[0]; inputBox.closest('.ndfHFb-c4YZDc').querySelector('button').click()
- 直接触发表单提交(备选)
若输入框属于某个表单,可直接调用表单的submit方法:
const inputBox = document.getElementsByClassName('ndfHFb-c4YZDc-UmsTj-YPqjbf')[0]; inputBox.form.submit();
注意事项
- Google Drive页面元素的类名可能会随版本更新变化,若上述选择器失效,可通过浏览器开发者工具(F12)查看提交按钮的最新类名或属性。
- 在WebView中执行JavaScript时,需确保页面完全加载完成,避免因元素未渲染导致代码执行失败。
内容的提问来源于stack exchange,提问作者Hayk o
相关产品推荐
相关产品推荐

