gpt4 book ai didi

java - htmlunit knockout js 不起作用。单击提交按钮返回同一页面

转载 作者:行者123 更新时间:2023-12-02 13:20:56 24 4
gpt4 key购买 nike

我是 htmlunit 的新手,需要对用 htmlunit 编写的网页进行测试。该登录页面中没有表单。

下面是用户名、密码和提交按钮的 html 代码 -

<div class="loader-mask" data-bind="visible: false">
<div class="loader"> Loading Form...</div>
</div>
<div class="form-group">
<label class="control-label">Email ID:</label>
<input type="text" name="username" class="form-control" placeholder="user@company.com" data-bind="
value: loginHandler.userEmail,
enterKey: signIn
">
</div><!-- /.form-group -->
<div class="form-group">
<label class="control-label">Password:</label>
<input type="password" name="password" class="form-control" placeholder="Passwords are case-sensitive" data-bind="
value: loginHandler.userPassword,
enterKey: signIn
">
</div><!-- /.form-group -->
<div class="text-right">
<p><button type="button" id="qaSignIn" class="btn btn-default" data-bind="
click: signIn,
disable: loginHandler.isLoggingIn,
continueOn: userLoggedIn,
continueLink: { link: 'dashboard.html', params: {} }
">

现在,在 htmlunit 中,我可以轻松获取用户名、密码和按钮,并且也可以设置用户名和密码字段的值,但是当我单击按钮时,它会返回相同的 html 登录页面。我尝试在浏览器上使用凭据登录,并且能够登录。所以凭证是好的。

我的 htmlunit 代码是 -

HtmlTextInput htmlInputUsername = (HtmlTextInput) loginPage.getElementByName("username");
htmlInputUsername.setValueAttribute("myUserName");
HtmlPasswordInput htmlInputPassword = (HtmlPasswordInput) loginPage.getElementByName("password");
htmlInputPassword.setValueAttribute("myPassword");
HtmlButton htmlButton = (HtmlButton) loginPage.getElementById("qaSignIn");
loginPage = htmlButton.click();

我尝试在单击登录按钮之前和之后打印 page.asXml() 但它返回相同的 xml 页面。知道我做错了什么吗?我什至尝试过设置这些选项 -

webClient.getOptions().setUseInsecureSSL(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.waitForBackgroundJavaScript(30000);

提前致谢。

最佳答案

在不知道分析您页面的网址的情况下,我只能猜测。

首先尝试启用 JavaScript

webClient.getOptions().setJavaScriptEnabled(true);

第二次

webClient.waitForBackgroundJavaScript(30000);

不是一个选项。在 WebClient 设置期间执行此操作是没有用的。您必须在点击后调用此电话

loginPage = htmlButton.click();
webClient.waitForBackgroundJavaScript(30000);

也许可以选择使用 WETATOR (www.wetator.org) 进行测试。与网页的交互变得更加简单,所有等待魔法都会自动为您完成。

关于java - htmlunit knockout js 不起作用。单击提交按钮返回同一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43563065/

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