gpt4 book ai didi

javascript - 通过 JavaFX 中的 WebEngine 使用 JS 脚本将值插入密码字段

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:14 27 4
gpt4 key购买 nike

我的目标是通过 JavaFX 中的 WebEngine 自动登录 Google Calendar 并在 WebView 中显示它。但我似乎无法将字符串值插入密码字段,即使它与用户名字段完美配合。

我尝试使用 Element e = webEngine.getDocument().getElementById(password) 在 Java 中创建脚本,并使用 e.setAttribute("value","mypassword") 插入值,但这也不起作用。它不提供堆栈跟踪,这意味着该元素存在,但我无法以某种方式插入该值。

    System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
WebEngine webEngine = webView.getEngine();
webEngine.load("https://calendar.google.com");
webEngine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
@Override
public void changed(ObservableValue ov, State oldState, State newState) {
if (newState == State.SUCCEEDED) {
webEngine.executeScript(
"function login(user){"
+ " var usernameField = document.getElementById(\"identifierId\");"
+ " usernameField.value = user;"
+ " var sButton = document.getElementById(\"identifierNext\");"
+ " sButton.click();"
+ "}"
+ "login('myusername');"
);
}
}
});
Thread t = new Thread(() -> {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Platform.runLater( () -> {
webEngine.executeScript(
"function login(pass){"
+ " var passwordField = document.getElementById(\"password\");"
+ " passwordField.value = pass;"
+ " var sButton = document.getElementById(\"passwordNext\");"
+ " sButton.click();"
+ "}"
+ "login('mypassword');"
);
});
});
t.start();

结果应该是,监听器等待页面加载,然后填写用户名并单击下一步。然后线程开始,但等待 5 秒以确保单击了“下一步”,然后它应该填写密码凭据,但没有。

最佳答案

使用 "document.querySelector(\"#password > div.aCsJod.oJeWuf > div > div.Xb9hP > input\");" 而不是 document.getElementById(\"password\"); 查找密码字段。

关于javascript - 通过 JavaFX 中的 WebEngine 使用 JS 脚本将值插入密码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164044/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com